繁体   English   中英

使用QNetworkReply如何发布文件,然后从服务器接收转换后的文件?

[英]With QNetworkReply how can I post a file and then receive a converted file back from the server?

我可以使用QNetworkReplyQNetworkAccessManagerQNetworkRequest等在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();
}

您还可以通过将QNetworkAccessManagerfinished信号连接到插槽并将文件写入那里,以异步方式进行操作:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM