使用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
为它发出get请求?或者我可以以某种方式从现有的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();
}
}
相关文章:
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- 使用 libssh 从 SFTP 服务器下载文件并使用 C++ 将其写入 ofstream?
- 使用 Libssh 将文件从服务器复制到客户端:分配文件复制目标路径时出现问题
- ofstream将额外的零字节写入Unix服务器上的文件
- 将文件发送到 HTTP 服务器 (C++ Wininet)
- COM 客户端连接 COM 服务器所需的文件是什么(进程外方案)
- 可视化 将 TCP 服务器数据包保存到 C++ 中的文件
- C++应用程序连接到网站服务器并根据密码检索文件
- 为什么我的 Redhat 服务器上的 QuickFIX 进程没有将其核心文件写入应有的位置?
- 通过TCP在客户端/ C#服务器之间传输文件C++
- 从远程服务器请求PDB文件
- 将文件从计算机上传到在线服务器上
- 连接到 FTP 服务器并访问文件
- 在通过套接字向服务器发送文件数据时,我得到了一些垃圾值?为什么
- 为什么文件没有通过 tcp 在 C# 中的客户端和 C 中的服务器之间正确传输(保存?)
- 为什么 tinyxml2 无法解析流量服务器 xml 文件
- 如何在不保存文件的情况下制作打印屏幕并将其发送到FTP服务器?我的工作代码将文件保存到HDD
- 使用C HTTP请求将文件上传到服务器
- 如何从网页上的PHP运行基于服务器客户的CPP文件