1
QNetworkAccessManager를 사용하여 파일을 전송하고 있습니다. 내 프로그램은 디버그에서 빌드 될 때 아무런 문제없이 실행됩니다. 그러나 빌드 할 때 문제가있는 이상한 문제가 있습니다. QIODevice :: read (QFile, "내 파일 경로") : 장치가 열려 있지 않습니다."QIODevice device not open"은 릴리스시 빌드 할 때만 발생합니다.
내 코드가 잘못되었습니다. 도움 주셔서 감사합니다.
QHttpMultiPart* getPacket(QString imgPath)
{
QHttpMultiPart *pMultiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
QFile *imgFile = new QFile(imgPath);
imgFile->setParent(pMultiPart);
Q_ASSERT(imgFile->open(QIODevice::ReadWrite));
QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"img\"; filename=\"target.jpg\""));
imagePart.setBodyDevice(imgFile);
pMultiPart->append(imagePart);
return pMultiPart;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
JTest testObj;
QNetworkAccessManager manager;
QHttpMultiPart *pHMP = getPacket("F:/Temp/1.jpg");
QNetworkReply *pNR = manager.put(QNetworkRequest(QUrl("http://192.168.11.102:8080/Test")), pHMP);
QObject::connect(pNR, SIGNAL(finished()), &testObj, SLOT(handleTransmissionFinished()));
return a.exec();
}