需求分析

短距离的多设备文件、信息分享,我们都有哪些选择?

  • 物理流
    U盘、移动硬盘:电脑间数据拷贝;
    数据线:电脑和手机间数据拷贝

  • 通讯软件流
    例如 QQ、微信、钉钉,还有曾经在局域网流行的飞秋、飞鸽传书等等

  • 分享服务流
    开启各种远程分享服务,如 smb、ftp、webdav 等

  • web应用流
    sharedrop.io

  • 黑科技流
    如华为Share一碰传、小米互传、苹果 Airdrop 等

这么多的流派,各自有什么优缺点呢:

物理流 通讯软件流 飞秋\飞鸽 分享服务流 web应用流 黑科技流
优点 速度快,稳定性好,数据量大时优势明显 装机量大,使用方便,可以远程传文件,尤其是信息发送优势巨大 专为局域网共享设计,速度快,无需帐号即可使用 家庭或企业环境使用优势巨大,扩展性强 使用便捷,跨平台效果好 Cool!!全家桶用户使用体验优异
缺点 需要额外硬件,且不同设备需求不同,U盘、移动硬盘有文件格式问题,数据线有接口类型问题等 需要登陆帐号使用,不适合个人多设备或者服务器上使用 装机量小,支持平台有限,不适非 IT 人员的设备使用 多数需要重服务端,配置相对复杂,使用场景受限 需要较好外网环境,兼容性较差 品牌隔离,使用场景非常有限

所以回到最开始的问题,“短距离多设备文件信息分享”,希望有一种通用性强、支持平台尽可能多、既可以传文件,最好还能发送简单信息的工具。

于是就有了下面要介绍的,利用Python实现的局域网分享脚本

脚本介绍

该脚本实际上是对 SimpleHTTPServerWithUpload.py 的二次修改,加入了操作剪切板的功能,由此实现简单的信息传递。从原始脚本的 star 数和 fork 数可以看出其被相当多的朋友所喜欢接受,并不断有人在其基础上进行优化改造。

原始脚本是对 Python2 中自带库 SimpleHTTPServer 的封装,在其基础上增加了 POST 文件上传的功能。鉴于现在绝大部分场景下都是使用 Python3 更多,所以我修改依赖改为使用 Python3 的 http.server 模块。

  • 该脚本理论上可以直接在主流 Linux 系统上直接运行,MacOS 及 Windows 则需要安装 Python3,这对于 IT 工作者来说应该没什么门槛吧
  • Android 手机可以通过安装 Termux 并安装 Python3 来运行脚本
  • 为了实现剪切板操作,电脑系统需要安装 pyperclip 库,而 Android 则需要安装 Termux:API 模块

使用方式

  1. 在支持的平台上,进入想要分享的文件路径,执行:

    1
    python3 [path_to_script_file]/share_server.py [port]

    如果不指定服务端口,默认监听端口为 8000

    server

  2. 确定本机 ip 地址

  3. 在局域网内另一台设备上,打开浏览器,输入 [ip]:[port] 即可浏览共享出的文件夹内容:

web

这样,几乎内网中任何一台支持浏览器的设备,都可以通过网页下载运行脚本那台机器上的文件资源、同过浏览器选择文件上传至服务器的指定目录;而如果只是想传一些简单的文本,网页端可以将内容粘贴到文本框后点击send,然后服务器测在任意位置通过粘贴快捷键得到网页发送过来的消息;如果是网页侧想获得服务器侧的文本消息,只需要服务器侧选择文本后执行复制逻辑,网页侧点击get,获取到的内容就会出现在文本框中

脚本下载