我这边需要通过http的方式把
图片上传给服务器,但是服务器给出了报错:Required request part 'file' is
not present,客户端报的
错误:server replied: Internal Server Error。
在postMan中可以正确
执行:

我的代码:
//file QImage map(info.filePath()); QByteArray byteArray; QDataStream write(&byteArray, QIODevice::WriteOnly); write << map; QString fileBinary = QString::fromLocal8Bit(byteArray.toBase64()); qDebug() << QString("%1大小%2").arg(name).arg(fileBinary.size()); ui->textEdit->append(QString("%1大小%2").arg(name).arg(fileBinary.size()));//上面的代码主要是把图片二进制数据读到字符串fileBinary //param
QJsonObject object;
QString expressNumber = name.section(QChar('_'), 0, 0);
object.insert("expressNumber", expressNumber);
object.insert("nameNumber", "574901"); //网点代号
object.insert("opCode", "182"); //操作代码
object.insert("snNumber", mac); //设备编码
object.insert("imgSource", info.filePath()); //图片来源
object.insert("extend", "");
QString param = QJsonDocument(object).toJson();
qDebug() << "param" << param;
ui->textEdit->append("param:" + param);
//signature
int length = param.length();
QString str = QString::asprintf("%08d", length);
qDebug() << "param长度" << str;
ui->textEdit->append("param长度" + str);
QString str1 = str + param;
QCryptographicHash cryptographic(QCryptographicHash::Md5);
QString signature = cryptographic.result().toHex();
ui->textEdit->append("signature:" + signature);
//url QString url = QString("file=%1&signature=%2¶m=%3") .arg(fileBinary).arg(signature).arg(param); qDebug() << url;
//同步
QEventLoop loop(this);
QNetworkAccessManager manager;
QNetworkRequest request;
request.setUrl(QUrl(url1));
qDebug() << request.url();
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("multipart/form-data")); QNetworkReply *reply = manager.post(request, url.toUtf8()); connect(&manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
loop.exec();
红色
部分为关键部分,因为上面说是file这个错误,大家帮忙看看,这个file为什么错误,