我试图在Qt 4.8中下载图像但没有成功。使用此link可以重现该行为。如果我使用其他网址,则代码可以正常工作。我也尝试在Qt 5.7中写这个,它没有任何问题。当我打开图像时,它不会显示。 以下是我的代码:
void download()
{
QNetworkRequest request;
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
request.setUrl(url);
// Create reply
QNetworkReply * reply = mNetManager->get(request);
// Connect to signals
QObject::connect(reply, SIGNAL(finished()), this, SLOT(imageLoaded()));
QObject::connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(dowloadProgressed(qint64,qint64)));
}
void MyClass::imageLoaded() {
// Get reply
QNetworkReply * reply = qobject_cast<QNetworkReply*>(sender());
if (reply->error() == QNetworkReply::NoError) {
if (isARedirectedUrl(reply)) {
setURLToRedirectedUrl(reply);
return;
} else {
QByteArray imageData = reply->readAll();
// save the image
QString fileType = reply->url().toString().split(".").last();
qDebug() << fileType;
QString diskUrl = QDir::homePath() + "/cache/" + cacheName + "." + fileType;
QFile imageFile(diskUrl);
if (imageFile.open(QIODevice::WriteOnly)) {
imageFile.write(imageData);
}
}
}
// if there is an error
else{
qDebug() << "ERROR loading image";
mLoading = 1;
emit loadingChanged();
}
}