QT通过http请求POST发送文件

时间:2016-08-27 17:11:20

标签: c++ node.js qt http file-upload

我使用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;
    }

0 个答案:

没有答案