"QIODevice device not open"仅在内置版本时发生



我正在使用QNetworkAccessManager来传输文件。我的程序在调试中构建时运行没有任何问题。但是在发布中内置时存在一个奇怪的问题: QIODevice::read (QFile, "我的文件路径"): 设备未打开

我的代码出了什么问题?感谢您的帮助!

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();
}

Q_ASSERT() 对于在以下情况下测试前置条件和事后条件很有用 发展。如果QT_NO_DEBUG是在 汇编。

Q_ASSERT不会在发布中进行评估,因此不会打开您的文件。

最新更新