get(请求); QByteArray data=reply->readAll(); qDebug(),c++,qt,ftp,qnetworkaccessmanager,qnetworkrequest,C++,Qt,Ftp,Qnetworkaccessmanager,Qnetworkrequest" /> get(请求); QByteArray data=reply->readAll(); qDebug(),c++,qt,ftp,qnetworkaccessmanager,qnetworkrequest,C++,Qt,Ftp,Qnetworkaccessmanager,Qnetworkrequest" />

C++ QT QNetworkAccessManager无法从ftp服务器下载文件 QNetworkAccessManager*nam=new QNetworkAccessManager(); QUrl url2(“ftp://127.0.0.1/test.txt/"); url2.设置密码(“12345”); url2.setUserName(“用户”); QNetworkRequest请求(url2); QNetworkReply*reply=nam->get(请求); QByteArray data=reply->readAll(); qDebug()

C++ QT QNetworkAccessManager无法从ftp服务器下载文件 QNetworkAccessManager*nam=new QNetworkAccessManager(); QUrl url2(“ftp://127.0.0.1/test.txt/"); url2.设置密码(“12345”); url2.setUserName(“用户”); QNetworkRequest请求(url2); QNetworkReply*reply=nam->get(请求); QByteArray data=reply->readAll(); qDebug(),c++,qt,ftp,qnetworkaccessmanager,qnetworkrequest,C++,Qt,Ftp,Qnetworkaccessmanager,Qnetworkrequest,get()不会立即同步执行get请求,而只是创建一个对象,实际请求将在稍后异步执行 readAll()只读取给定时间的可用数据,但不阻塞以等待更多数据。创建之后,没有任何可用的数据 要等待下载所有数据,请连接到和信号: 在requestFinished()插槽中,您可以使用readAll()。当仅向下移动小文件时,该操作正常。下载较大的文件时,最好连接到信号并以增量块的形式处理到达的数据,而不是使用单个readAll()最后。-我还没有听说他们什么时候能做到这一点,但我主要是在一个简单的控制台应

get()不会立即同步执行get请求,而只是创建一个对象,实际请求将在稍后异步执行

readAll()
只读取给定时间的可用数据,但不阻塞以等待更多数据。创建之后,没有任何可用的数据

要等待下载所有数据,请连接到和信号:


requestFinished()
插槽中,您可以使用
readAll()
。当仅向下移动小文件时,该操作正常。下载较大的文件时,最好连接到信号并以增量块的形式处理到达的数据,而不是使用单个
readAll()
最后。

-我还没有听说他们什么时候能做到这一点,但我主要是在一个简单的控制台应用程序中这样做的,我没有任何带有插槽和信号的类,我如何连接它们?我会介绍这样的类。另一种选择是本地事件循环,许多邪恶的根源。我创建了类,并像你告诉我的那样将插槽和信号连接到对象,但当我阅读文件时仍然会收到垃圾,我做错了什么-我得到这个输出---------------->“”“”我得到它的工作我检查了错误消息,很可能是文件的权限问题。
    QNetworkAccessManager *nam = new QNetworkAccessManager();
    QUrl url2("ftp://127.0.0.1/test.txt/");
    url2.setPassword("12345");
    url2.setUserName("user");
    QNetworkRequest req(url2);


   QNetworkReply *reply = nam->get(req);
   QByteArray data = reply->readAll() ;
   qDebug() << data ;
connect(reply, SIGNAL(finished()), this, SLOT(requestFinished()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(requestError(QNetworkReply::NetworkError));