Устройство QIODevice не открывается только при сборке в Release

Я использую QNetworkAccessManager для передачи файла. Моя программа работает без проблем, когда она была построена в Debug. Но есть странная проблема с проблемой при построении в Release: 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();
}

person A.J    schedule 13.01.2017    source источник


Ответы (1)


Q_ASSERT () полезен для тестирования предварительных и пост-условий во время разработки. Он ничего не делает, если QT_NO_DEBUG был определен во время компиляции.

Q_ASSERT не будет оцениваться в Release, поэтому ваш файл не будет открыт.

person ariwez    schedule 13.01.2017