无法在Qt 4.8中下载图像

时间:2016-07-30 20:48:04

标签: c++ image qt download

我试图在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();
    }
}

0 个答案:

没有答案