Qt上传文件到ftp服务器

第一步,首先确定环境已经配置好

Qt应用程序默认没有加QtNetwork库。如下图:

                            

在开发过程中,因处理业务需要手动添加QtNetwork库。根据常见情况分为以下两种:

【1】若使用QTCreator开发程序

在工程的pro文件中添加:QT += network(如果找不到.pro文件,如果配置了vs+qt的环境,则可以在vs打开项目之后,在项目名右键选择:Create basic .pro File)即可生成 .pro 文件。

             

【2】若使用VS + QT开发程序

代码如下:

头文件添加:

#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QUrl>

上传文件代码,这里以上传图片为例:

此处假设服务器端口号为:ftp://10.35.18.139

QFile ffile("C:/file.txt");//要上传的文件的本地路径
ffile.open(QIODevice::ReadOnly);
QByteArray byte_file = ffile.readAll();
QNetworkAccessManager *accessManager = new QNetworkAccessManager(this);
accessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);
QUrl url("ftp://10.35.18.139/upload/file_new.txt");//上传到该服务器下的upload文件夹内
url.setPort(21);//服务器端口号,一般没有被更改过的默认端口号为21
url.setUserName("nnir_ftp");//服务器登录用户名
url.setPassword("nnirnnir");//服务器登录密码

QNetworkRequest request(url);
reply = accessManager->put(request, byte_file);

connect(accessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(loadError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(uploadProgress(qint64, qint64)), this, SLOT(loadProgress(qint64, qint64)));

 

若在VS2013 + QT5编译错误提示如下:

一般出现此链接问题都是没有添加库文件造成的。

很明显,程序中使用了QtNetwork库,那么就需要手动添加QtNetwork库文件:

(1)在debug模式,需要加Q5tNetworkd.lib库文件

(2)在release模式,需要加Qt5Network.lib库文件

当使用VS进行开发时在哪里添加呢?共有两个地方需要添加(缺一不可):

(1)项目->属性->c/c++->常规->附加包含目录->在弹出的对话框中,点那个文件夹形状的按钮添加新行,输入$(QTDIR)\include\QtNetwork

具体如图所示:

(2)项目->属性->连接器->输入->附加依赖项,添加 Qt5Networkd.lib(debug模式)或者 Qt5Network.lib(release模式)

具体如图所示:

添加完成后,再编译。若仍然报错,请仔细复盘如上步骤。

备注:其他模块库的添加类比如上步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaoRenkk123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值