需求是这样的:实现pc端的文件手机端可以下载。现在qq、微信和钉钉都能实现文件下载,而且可以不在一个局域网内。但是会有一定的限制,比如文件大小。于是利用python的simplehttpserver(python3 http.server)实现了下,界面使用pyqt5写的。打包成exe用的是pyinstaller。
特点:同一个局域网内文件分享,在不同的机器上下载。
遇到的主要困难是如何拿到pc端的ip地址。
下载:window下exe程序
实现原理:
1 有个进程中运行httpserver, 处理网络请求。认证是通过url中带的code实现。
2 根据获取到的文件路径设置url中请求参数。
获取pc的ip地址是这样实现的:
def get_local_ip():
info = psutil.net_if_addrs()
ip_list = []
for k, v in info.items():
for item in v:
if item.family == socket.AddressFamily.AF_INET:
ip_list.append(item.address)
ip_list.remove("127.0.0.1")
return ip_list
借助了psutil,其实利用socket也能获取到。如果有虚拟机,注意可能会有虚拟网卡。
最后的效果图:
项目地址:https://github.com/woshimanong1990/local_file_share
补充:
建了一个qq群:389954854,主要目的是互帮互助,通过交流促进python技术。很多初学者往往不知道如何下手,还等什么,快快加入进来吧!
或者关注微信公众号:python码码有趣的