qt - QNetworkAccessManager::put - QIODevice::read:将文件发送到 ftp 服务器后设备未打开

标签 qt qnetworkaccessmanager

当我将文件发送到 ftp 服务器时,我收到消息 QIODevice::read: device not open (after sent this file..)

输出看起来像这样:

Uploaded 1673 of 1673

QIODevice::read: device not open

Finished 0

#include "uploader.h"
 
Uploader::Uploader(QObject *parent) :
    QObject(parent)
{
}
 
void Uploader::start(const QString &fileName) {
    QUrl url("ftp://adresIP/test/tt.txt");
    url.setUserName("ftp@domena.pl");
    url.setPassword("passwd");
 
    file = new QFile(fileName);
 
    QByteArray putData;
 
    file->open(QIODevice::ReadOnly);
 
    putData.append(file->readAll());
 
    //-- other attempts
    file->flush();
    file->close();
    delete file;
    //--
 
    reply = nam.put(QNetworkRequest(url), putData);
    connect(reply, SIGNAL(uploadProgress(qint64, qint64)), this, SLOT(uploadProgress(qint64, qint64)));
    connect(reply, SIGNAL(finished()), this, SLOT(uploadDone()));
 
}
 
 
void Uploader::uploadProgress(qint64 bytesSent, qint64 bytesTotal) {
    qDebug() << "Uploaded" << bytesSent << "of" << bytesTotal;
}
 
void Uploader::uploadDone() {
    qDebug() << "Finished" << reply->error();
 
    reply->deleteLater();
}
 
//uploader.h
   QNetworkAccessManager nam;
   QFile *file;
   QNetworkReply *reply;
 
//main.cpp
Uploader u;
u.start("F:\\song.mp3");

编辑:

我在 Ubuntu(之前是 Windows,Qt 5.3)上对 Qt 5.0.1 进行了测试,这里一切正常(未显示消息 QIODevice::read: device not open。 .).可能是 Qt Framework 错误?

最佳答案

我觉得是qt的问题。在 ftp 上传 wirh qt 5.3 win vs2010 后,我收到了同样的警告。安装 5.5 后,消息消失了。

关于qt - QNetworkAccessManager::put - QIODevice::read:将文件发送到 ftp 服务器后设备未打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488099/

相关文章:

c++ - 使用 Qt5 和 Crypto++ 时找不到 header

c++ - QAbstractVideoSurface 示例

linux - QT下打开已有的sqlite3数据库

python - 类型错误 : native Qt signal is not callable

c++ - 如何使用 QNetworkAccessManager 发送 DELETE 请求?

c++ - Qt 4.7 : TCP thread, 数据传输导致内存泄漏

qt - 如何在单个事件中获得多个按键?

c++ - QSslError : The certificate is self-signed, 和不受信任

qt - QNetworkAccessManager - 如何发送 "PATCH"请求

qt - 如何从我自己的 QtWebKit 应用程序读取 POST 数据 "sent"?