一個簡單的Ftp客戶端文件上傳/下載操做示例。
QNetworkAccessManager manager; QUrl url; /* 設置通信協議 */ url.setScheme("ftp"); /* 設置用戶名 */ url.setUserName("root"); /* 設置密碼 */ url.setPassword("123456"); /* 設置主機,也能夠是域名 */ url.setHost("127.0.0.1"); /* 設置端口號,通常爲21 */ url.setPort(21); /* 設置路徑 */ url.setPath("/tmp/hello.png"); /* 裝載本地文件 */ QFile file("/Desktop/hello.png"); file.open(QIODevice::ReadOnly); /* 讀取本地文件數據 */ QByteArray data = file.readAll(); file.close(); QNetworkRequest request(url); /* 上傳數據,上傳成功後會在遠端建立/tmp/hello.png文件 */ QNetworkReply* reply = manager.put(request, data); QEventLoop eventLoop; QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit())); /* 進入等待,但事件循環依然進行 */ eventLoop.exec(); if (reply->error() != QNetworkReply::NoError) { qDebug() << "Error: " << reply->errorString(); }
QNetworkAccessManager manager; QUrl url; /* 設置通信協議 */ url.setScheme("ftp"); /* 設置用戶名 */ url.setUserName("root"); /* 設置密碼 */ url.setPassword("123456"); /* 設置主機,也能夠是域名 */ url.setHost("127.0.0.1"); /* 設置端口號,通常爲21 */ url.setPort(21); /* 設置路徑 */ url.setPath("/tmp/test.txt"); QNetworkRequest request(url); /* 執行Get請求 */ QNetworkReply* reply = manager.get(request); QEventLoop eventLoop; QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit())); /* 進入等待,但事件循環依然進行 */ eventLoop.exec(); if (reply->error() == QNetworkReply::NoError) { /* 建立本地文件 */ QFile file("test.txt"); file.open(QIODevice::WriteOnly); /* 寫入文件 */ file.write(reply->readAll()); file.close(); } else { qDebug() << "Error: " << reply->errorString(); }
關注Qt君公衆號獲取更多知識。oop