gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:02:22 27 4
gpt4 key购买 nike

我可以在 Qt 中使用 QNetworkReplyQNetworkAccessManagerQNetworkRequest 等将文件发布到服务器。该服务器转换文件并将其吐回。我如何获得那个吐出来的文件?我是否需要以某种方式找到从 header 返回的文件的 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();
}
}

关于c++ - 使用 QNetworkReply 如何发布文件然后从服务器接收转换后的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25111828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com