QT_http远程登录基于filebrowser搭建的文件服务器提供目录展示和下载功能
[项目背景]
基于filebrowser搭建的文件服务器,管理员上传文件到该服务器,使用部门利用本软件实现远程登录http查看文件目录并选择自己所需的文件进行下载。
[实现目标]
远程登录http站点、树形展示文件服务器、列表展示需要下载的文件(允许多个文件依次下载、可以增加和移除)。
[如下知识点的实际应用]
1.使用treeWidget、QTreeWidgetItem搭建树图显示,包括获取节点路径、删除节点的应用。
2.使用QJsonDocument、QNetworkAccessManager、QNetworkRequest、QNetworkReply实现http文件下载,不同于一般的下载,本例是先获取cookie并后续发送命令时携带cookie从而真正意义上实现文件下载的功能。
3.根据点击的信号,实时动态获取文件夹的下级目录并显示。
4.使用QEventLoop、eventLoop实现同步调用,槽函数readyRead实现异步调用。
5.使用QJsonValue、QJsonObject解析json数据。
6.使用QStandardItemModel实现列表展示,包括增加行、删除行的应用。
7.NetworkError错误码转换为QString。
8.Filebrowser是一款可以通过浏览器对服务器上的文件进行管理的软件。Filebrowser提供了一个在指定目录内进行文件管理的界面,可以用于上传、删除、预览、重命名和编辑文件。它允许创建多个用户,每个用户都可以拥有自己的目录。Filebrowser可以作为一个独立的应用程序,也可以作为一个网盘程序来使用。
9.状态栏实时显示当前运行状态。
[界面]
[基本思路]
第一步,发送登录信息http://10.xx.xx.xxx:xxxx/api/login,建立槽函数会获取网站返回的cookie,保存到变量headStr中。
第二步,建立槽函数,点击树图发出路径查询命令http://10.xx.xx.xxx:xxxx/api/resources/xxx,建立槽函数获取网站返回的数据(网站返回的是json),解析json获得下一层子目录的文件信息nameList,再将nameList以树图的形式展现。
注意点击树图发出路径查询命令时是需要携带cookie的,否则网站不予回应。这就是网络上一般的http下载例程不能有效运行的原因。
第三步,点击下载,先检查信息完整性,根据下载列表框里的路径信息,发送下载命令http://10.xx.xx.xxx:xxxx/api/raw/xxx,建立槽函数获取网站返回的数据,全部读到本地文件中。
同样发出下载命令时是需要携带cookie的,否则网站不予回应。
其它注意事项:
.pro文件增加QT += network
将http://10.xx.xx.xxx:xxxx更换成自己实际需要的ip地址:端口号,即可正常运行。
注意连接、查询目录、下载各阶段的发送命令变化。
[项目链接]