void XMLerLoadUrlThread::onNetworkReply(QNetworkReply* reply) { QString replyString; QString fileTemplate; fileTemplate.append(QDir::tempPath()); fileTemplate.append(QDir::separator()); fileTemplate.append("XMLer"); tempFile = new QTemporaryFile(this); tempFile->setFileTemplate(fileTemplate); tempFile->setAutoRemove(true); int httpstatuscode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toUInt(); switch(httpstatuscode) { case 200: if (reply->isReadable()) { if (!tempFile->open()) { replyString = "fail"; break; }; tempFile->write(reply->readAll()); tempFile->close(); replyString = QString("complete.\nTemporary file: %1\n(%2)").arg(tempFile->fileName()).arg(_bytesTotal); } else replyString = "fail"; break; default: if (reply->isReadable()) { replyString = QString("fail.\nReply: %1\n(%2)").\ arg(reply->readAll().data()).arg(_bytesTotal); } else replyString = "fail"; break; }; QString msg = QString("%1 | %2: download %3.").arg(reply->error()).arg(httpstatuscode).arg(replyString); emit urlDownloaded(reply->error(), tempFile->fileName(), msg); reply->deleteLater(); }
void WebBridgeRS::onUrlDownloaded(){ FileDownloader * fileDownloader = qobject_cast<FileDownloader *>(QObject::sender()); //QDir::absoluteFilePath() QString fpath = getDownloadDirectory(); fpath.append("/"); QString urlstring(fileDownloader->url().toString()); fpath.append(QFileInfo(urlstring).fileName()); std::cout << fpath.toStdString() << std::endl; QFile file(fpath); file.open(QIODevice::WriteOnly); file.write(fileDownloader->downloadedData()); // optional, as QFile destructor will already do it: file.close(); std::cout << fileDownloader->downloadedData().data() << std::endl; emit urlDownloaded(fpath, urlstring); }