![](/img/trans.png)
[英]Reading large file from QNetworkReply to QFile? Streaming from QNetworkReply
[英]With QNetworkReply how can I post a file and then receive a converted file back from the server?
我可以使用QNetworkReply
, QNetworkAccessManager
, QNetworkRequest
等在Qt中將文件發布到服務器。 該服務器轉換文件並將其吐回。 如何獲得隨身攜帶的文件? 我是否需要以某種方式找到從標頭返回的文件的url,然后讓QNetworkAccessManager
進行獲取請求? 還是我可以從現有的QNetworkReply
信號中獲取它並將其寫入文件?
如果服務器響應請求而返回文件,那么您可以直接從返回的回復中讀取文件:
QNetworkAccessManager nam;
QUrl url(QString("http://www.example.com"));
url.addQueryItem("parameter", "value");
QNetworkRequest request(url);
QNetworkReply *reply = nam.get(request);
QEventLoop eventloop;
connect(reply,SIGNAL(finished()),&eventloop,SLOT(quit()));
eventloop.exec();
if (reply->error() == QNetworkReply::NoError)
{
QByteArray bts = reply->readAll();
QFile file("path/to/file");
file.open(QIODevice::WriteOnly);
file.write(bts);
file.close();
}
您還可以通過將QNetworkAccessManager
的finished
信號連接到插槽並將文件寫入那里,以異步方式進行操作:
connect(&nam,SIGNAL(finished(QNetworkReply*)),this,SLOT(onFinished(QNetworkReply*)));
void onFinished(QNetworkReply* reply)
{
if (reply->error() == QNetworkReply::NoError)
{
QByteArray bts = reply->readAll();
QFile file("path/to/file");
file.open(QIODevice::WriteOnly);
file.write(bts);
file.close();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.