Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QNetworkAccessManager::put-QIODevice::read:将文件发送到ftp服务器后设备未打开_Qt_Qnetworkaccessmanager - Fatal编程技术网

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

Qt QNetworkAccessManager::put-QIODevice::read:将文件发送到ftp服务器后设备未打开,qt,qnetworkaccessmanager,Qt,Qnetworkaccessmanager,当我将文件发送到ftp服务器时,收到消息QIODevice::read:设备未打开(发送此文件后…) 输出如下所示: 上传1673/1673 QIODevice::读取:设备未打开 完成0 #包括“uploader.h” Uploader::Uploader(QObject*父对象): QObject(父对象) { } void Uploader::start(常量QString和文件名){ QUrl url(“ftp://adresIP/test/tt.txt"); url.setUserNa

当我将文件发送到ftp服务器时,收到消息QIODevice::read:设备未打开(发送此文件后…)

输出如下所示:

上传1673/1673

QIODevice::读取:设备未打开

完成0

#包括“uploader.h”
Uploader::Uploader(QObject*父对象):
QObject(父对象)
{
}
void Uploader::start(常量QString和文件名){
QUrl url(“ftp://adresIP/test/tt.txt");
url.setUserName(“ftp@domena.pl");
url.setPassword(“passwd”);
文件=新的QFile(文件名);
QByteArray数据;
文件->打开(QIODevice::ReadOnly);
append(文件->readAll());
//--其他尝试
文件->刷新();
文件->关闭();
删除文件;
//--
reply=nam.put(QNetworkRequest(url),putData);
连接(应答,信号(上传进度(qint64,qint64)),此,插槽(上传进度(qint64,qint64));
连接(应答,信号(finished()),此,插槽(uploadDone());
}
void Uploader::uploadProgress(qint64 bytesSent,qint64 bytesTotal){

qDebug()我认为这是一个qt问题。在ftp使用qt 5.3 win vs2010上传后,我收到了相同的警告。安装5.5后,消息消失。

可能重复,但我可以将数据上传到服务器。我不知道为什么我总是收到消息“QIODevice::read:device not open”,尽管文件上传成功;屏幕:
#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");