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()
get()不会立即同步执行get请求,而只是创建一个对象,实际请求将在稍后异步执行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()最后。-我还没有听说他们什么时候能做到这一点,但我主要是在一个简单的控制台应
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));