当前位置:   article > 正文

Qt解决QUrl含有中文或特殊字符无法下载的问题_qnetworkreply 特殊字符的

qnetworkreply 特殊字符的
  1. QJsonObject jUrlObj = jPageObj.value("ImageInfo").toObject();
  2. QString str = QString::fromLocal8Bit(jUrlObj.value("Url").toVariant().toString().toLocal8Bit().data());
  3. printf("ftp下载:%s", str.toLocal8Bit().data());

此处打印数据的 URL 中文展示正常。

接下来就是对URL传值进行下载图片了。 

  1. bool DownLoad(QString strUrl, QByteArray& qbaBuf)
  2. {
  3. //申请一个网络操作管理对象
  4. QNetworkAccessManager* manager = new QNetworkAccessManager();
  5. char imgFormat[8]= "bmp";
  6. //获取url
  7. QUrl url = QUrl(strUrl);
  8. QNetworkReply* reply = manager->get(QNetworkRequest(url));
  9. //阻塞,等待图片下载完成, 然后函数退出
  10. QEventLoop eventLoop;
  11. manager->connect(manager, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));
  12. QTimer::singleShot(3000, &eventLoop,SLOT(quit()));
  13. eventLoop.exec();
  14. QNetworkReply::NetworkError err = reply->error();
  15. if (QNetworkReply::NoError != err)
  16. {
  17. manager->deleteLater();
  18. reply->deleteLater();
  19. return false;
  20. }
  21. QByteArray qbaBufRes = reply->readAll();
  22. qDebug() << QString::fromLocal8Bit("*****DownLoad 图片下载url:") << strUrl << QString::fromLocal8Bit("size:") << qbaBufRes.size();
  23. QImage qImgRes;
  24. qImgRes.loadFromData(qbaBufRes);
  25. QBuffer buffer;
  26. qImgRes.save(&buffer, imgFormat);
  27. qbaBuf.clear();
  28. qbaBuf.append(buffer.data(), buffer.size());
  29. qDebug() << QString::fromLocal8Bit("图片下载数据,大小: ") << qbaBuf.size();
  30. manager->deleteLater();
  31. reply->deleteLater();
  32. if (qbaBuf.size() > 0)
  33. {
  34. return true;
  35. }
  36. else
  37. {
  38. return false;
  39. }
  40. }

若是QJson解析后,有数据结构体赋值传输,例如我遇到的问题:

QString 转存到了一个结构体的string值中,将这个值带入到图片内容解析后,触发下载函数,获取string的url内容。

  1. CImageInfo.m_url = str.toLocal8Bit().data(); //此处str为QString的内容,转到string
  2. QByteArray f_qba; //图片信息
  3. DownLoad(QString::fromLocal8Bit(CImageInfo.m_url.c_str()), f_qba); //调用图片下载函数时,再转回QString。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/299644?site
推荐阅读
相关标签
  

闽ICP备14008679号