我使用Qt,我尝试通过http请求将类似图像或视频的文件发送到我的NodeJS服务器。 我有数据发送问题,当我读取文件并向服务器发送数据时,我没有收到好的字符。我想问题来自unicode,utf16或类似的东西,因为它使用的是file.txt而不是image.jpg
这是我阅读和发送文件的功能。调用此函数直到读取函数结束。
input_shape=(84,400).
每次服务器响应时都会调用此函数
void FileManager::sendFileDataToServer(QString pathFile, QString location) {
CredentailsTable cdt;
if (_qfile->isOpen())
{
QString data;
if (!_in->atEnd()) {
data = _in->read(_socketManager->getBufferSize()); // read file
cdt.addCredential("name", getNameFile(_pathSendFile)); // set data
cdt.addCredential("msg", data);
_fileRequest->request(FileRequest::POST, FileRequest::Write, cdt);
}
else {
_qfileTest->close();
qDebug("End file");
}
}
else
qDebug("Error open file");
}
这是我的请求发送的地方
void FileManager::responseSendFileDataToServer(QNetworkReply *reply) {
if (reply->error() != 0)
{
qDebug("Il y a eu une erreur sur le server %d", reply->error());
return ;
}
else
this->sendFileDataToServer(_pathSendFile, _locationFileServer);
}
我的nodeJS功能:
void ServiceRequest::request(Type type, int request, QByteArray cdt) {
QString strRequest = "REQUEST : http://" + _host + _prefixRoute + getRoute(request);
qDebug(strRequest.toStdString().c_str());
switch (type) {
case POST: {
QNetworkRequest networkRequest = QNetworkRequest(QUrl("http://" + _host + _prefixRoute + getRoute(request)));
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QNetworkReply *replyPost = this->post(networkRequest, cdt);
connect(replyPost, static_cast<void(QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), this, &ServiceRequest::slotError);
connect(replyPost, &QNetworkReply::sslErrors, this, &ServiceRequest::slotSslErrors);
break;
}