通过http-server实现手机电脑文件互传

搞个有意思的文件传输,基于http-server实现。请保证手机和电脑处于同一局域网中。

如果要基于http-server实现功能,就必须要有shell,电脑上直接用cmd来搞就可以,手机上得有能支持shell的平台,我们这里选用Termux。教程参考此处:Termux 入门教程:架设手机 Server 下载文件

用Termux实现手机向电脑传输文件

Termux在安卓手机上模拟了Linux平台。这里分为三步走:安装Termux,安装Node.js,通过Node.js运行http-server。

1. 安装Termux

Google Play商店因为技术原因已经停止更新Termux,故我们从GitHub上直接下载,地址为:https://github.com/termux/termux-app/releases1

选择一个apk文件下载安装后直接打开应用,可以看到这样的界面:

1

做一下简单的环境准备:

执行下面两条命令更新系统:

# 连接远程仓库,获取软件包信息
$ apt update

# 更新本地已经安装的软件包
$ apt upgrade

可以安装运行sl软件包测试系统是否正常:

# 安装 sl 软件包
$ apt install sl

# 运行
$ sl

如果一切正常,会显示一个火车的命令行动画。

然后让手机能访问本地存储(重要):

$ termux-setup-storage

执行完之后手机会询问是否允许Termux访问本地存储,选择“始终允许”。

这样的话键入ls会看到本地目录下多了一个storage目录:

2

2. 安装Node.js

执行命令

$ apt install nodejs

即可安装Node.js

3. 架设Server

现在,通过 Node.js 运行 HTTP Server。

首先,安装 npm 模块http-server。

$ npm install -g http-server

然后,运行 Server。

$ http-server

正常情况下,命令行会提示 Server 已经在 8080 端口运行了,并且还会提示外部可以访问的 IP 地址。

3

这时,在电脑浏览器地址栏输入”Available on”后面的某个ip地址就能访问了(第一个不是,可能是第二个也可能是第三个,都试试肯定有一个能行),如下图:

4

可以看到,storage文件夹下面保存了手机中的图片、视频等文件:

5

实现电脑向手机传输文件

与手机端类似,不过这次我们可以直接用命令行窗口来搞了。

安装配置Node.js

参考这则教程:nodejs本地环境配置(windows10)

安装http-server

直接在cmd窗口中执行

npm install http-server

安装http-server。安装完毕后找到本地Node.js的目录,将其中node-global的路径放入环境变量中:

右键此电脑 - 属性 - 高级系统设置 - 环境变量,出现窗口:

6

找到系统变量中的Path,双击打开,然后新建环境变量并将node-global的路径放入其中,如图所示:

7

这时候到你想要分享的文件夹下,打开cmd,执行命令

http-server

看到如下窗口:

8

有了手机端的经验,我们直接在手机浏览器地址栏输入之前输入的ip地址,比如我的就是https://10.204.26.21:8080,就能得到如下的界面:

9

这些文件就可以下载到手机中了。

关于Termux,多说两句

Termux可以在手机上模拟Linux,那就可以写一些简单的C程序或者python程序了,比如我们可以用下面的命令安装clang包,支持C程序编译和运行

pkg install clang

再安装文本编辑器vim

pkg install vim

这时候就可以像在电脑端linux的终端那样编写C代码了。当然也可以活学活用,比如把电脑上的C程序通过http-server传到手机上,再用Termux打开并保存。比如我在电脑上写了一个多项式求导的C程序,保存到手机上:

10

用gcc编译运行这个程序,就和电脑运行一模一样:

11

后续

之后想使用http-server,如果在电脑上,到想要共享的路径下打开cmd,输入http-server即可;如果在手机上,打开Termux,转到想要共享的路径下,输入http-server即可。

  1. 更多Termux app相关内容可见此处。