webimage.cpp 955 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "webimage.h"
  2. WebImage::WebImage(QObject* parent) : QObject(parent)
  3. {
  4. }
  5. bool WebImage::download(QString url, QString savePath)
  6. {
  7. QNetworkAccessManager* manager = new QNetworkAccessManager(this);
  8. QNetworkRequest request;
  9. request.setUrl(QUrl(url));
  10. QNetworkReply* reply = manager->get(request);
  11. QTimer timer;
  12. timer.setSingleShot(true);
  13. QEventLoop loop;
  14. connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
  15. connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
  16. timer.start(10000);
  17. loop.exec();
  18. if (timer.isActive())
  19. {
  20. timer.stop();
  21. }
  22. int code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
  23. if (code == 200)
  24. {
  25. QByteArray data = reply->readAll();
  26. QFile file(savePath);
  27. file.open(QIODevice::WriteOnly);
  28. file.write(data);
  29. file.close();
  30. }
  31. delete manager;
  32. return code == 200;
  33. }