手机文件,比如照片和视频,如何下载到桌面电脑?
普通用户可以使用手机线,将手机和电脑连起来。作为开发者,其实有更方便的方法,就是在手机架设一个 HTTP 服务,然后从桌面浏览器访问手机。
本文讲解如何使用 Termux 架设手机的 HTTP 服务器。
一、Termux 是什么?
Termux 是一个安卓手机的 Linux 模拟器,可以在手机上模拟 Linux 环境。它提供一个命令行界面,让用户与系统互动。
它就是一个普通的手机 App,可以从应用商店下载安装。不需要 root 权限,也不需要设置,打开就能使用。
二、环境准备
打开 Termux 以后,就是一个全屏的命令行界面。虽然可以用手机的触摸键盘输入命令,但还是推荐使用蓝牙键盘。
第一步,更新一下系统,保证使用最新版本。
# 连接远程仓库,获取软件包信息 $ apt update # 更新本地已经安装的软件包 $ apt upgrade
第二步,测试系统。
# 安装 sl 软件包 $ apt install sl # 运行 $ sl
上面命令安装测试包sl
,然后运行。如果一切正常,会显示一个火车的命令行动画。
第三步,访问本机存储。
手机 App 默认只能访问自己的数据,如果要访问手机的存储,需要请求权限。
$ termux-setup-storage
执行上面的命令以后,会跳出一个对话框,询问是否允许 Termux 访问手机存储,点击"允许"。
这会在当前目录下生成一个storage
子目录,它是手机存储的符号链接,后文下载文件就是到这个目录去下载。
三、软件包管理
除了apt
命令,Termux 还提供pkg
命令进行软件包管理。
# 安装软件包 $ pkg install [package name] # 卸载软件包 $ pkg uninstall [package name] # 列出所有软件包 $ pkg list-all
其实,pkg
的底层就是apt
,只是运行前会执行一次apt update
,保证安装的是最新版本。所以,apt install sl
基本等同于pkg install sl
。
Termux 支持的软件包清单,可以到这里查看。
四、Node.js
下面,安装 Node.js。
$ apt install nodejs
安装完成后,就可以运行 JavaScript 脚本了。比如,新建一个脚本hello.js
。
// hello.js console.log('hello world');
然后,执行这个脚本。
$ node hello.js hello world
五、架设 Server
现在,通过 Node.js 运行 HTTP Server。
首先,安装 npm 模块http-server
。
$ npm install -g http-server
然后,运行 Server。
$ http-server
正常情况下,命令行会提示 Server 已经在 8080 端口运行了,并且还会提示外部可以访问的 IP 地址。
举例来说,手机的局域网 IP 是 192.168.2.6,那么我们通过桌面电脑的浏览器访问http://192.168.2.6:8080
,就可以看到 Termux 的根目录了。进入下面的storage
子目录,就可以下载手机文件了。
如果手机和电脑不在同一个局域网,那可以打开手机的热点功能,让桌面电脑通过手机热点上网,再访问手机的 HTTP Server。
这里顺便提一下,下面的命令可以从命令行查看手机的 IP 地址。
$ apt install net-tools $ ifconfig
六、Python
不使用 Node.js,而使用其他方法架设 HTTP Server 也是可以的。下面演示 Python 的方法。
$ apt install python $ python -m http.server 8080
然后,桌面电脑就可以访问手机了。
Termux 是非常强大的工具,除了上面的方法,还可以架设 Apache 服务器,或者通过其他途径(FTP、SSH、Rsync)访问手机,这里就不详细介绍了。
(完)
iwen 说:
微信和QQ不行吗
2019年7月23日 16:55 | # | 引用
LinYa 说:
此前手机下载PC文件一直是在文件目录上启动 http-server来进行下载,没想到还能反过来
2019年7月23日 17:13 | # | 引用
PC 说:
这个跟FTP是什么关系呢
2019年7月23日 17:19 | # | 引用
LarryCai 说:
一直卡在installing是怎么回事。
2019年7月23日 17:42 | # | 引用
magicbing 说:
文中说的方法应该走http下载, ftp需要账号登录
2019年7月23日 17:46 | # | 引用
Min 说:
表示自己用这种方式很久了;手机和电脑互传数据在特定场景下很无奈
(向手机传一部大小超过4G的电影,手机上某个文件数量巨大的文件夹想传到电脑)
只好用一些带有远程管理服务的软件,电脑访问IP或者用sftp等去下载。
这和用termux是一样的,不过termux能搞很多东西,安装Linux发行版等等...
2019年7月23日 17:54 | # | 引用
SR2k 说:
天…软老师的方案也太 hard-core 了 8
2019年7月23日 19:29 | # | 引用
码中人 说:
这类工具很多的,而且是最早一批广泛使用的手机app.比如啥ES文件管理器。
2019年7月23日 21:46 | # | 引用
执迷不悟 说:
在ios系统中如何正确的传文件到桌面?阮老师有空可以研究并科普一下吗?
2019年7月24日 01:02 | # | 引用
Jianrry 说:
大多数情况下,我用微信或者QQ互传文件,没有走局域网流量,传输速度有点慢。
现在我基本上用的是Samba,实现在Linux、Windows、Andriod之间互传文件,走的是局域网流量,传输速度很快,Andriod手机使用CX文件管理器连接到Samba服务器进行传输。
可以看我的这篇文章(Ubuntu 18.04.2 LTS安装samba,实现文件夹共享:https://jianrry.com/index.php/archives/87/),了解一下。
Termux还没用过,正好下一个体验一下。
2019年7月24日 01:12 | # | 引用
Mr Ma 说:
阮老师的方案确实很好,不过如果只用来传文件的话就稍微有点麻烦了。如果只传文件的话可以在电脑上开一个 Web 服务器,用手机浏览器就可以很方便的上传和下载文件,而且只要能安装浏览器的手机都能用。
2019年7月24日 02:14 | # | 引用
winlans 说:
这样很好玩啊, 手机就可以做开发机了,哈哈
2019年7月24日 09:49 | # | 引用
liushili 说:
感觉也可以用它来装个shadowsocks来翻墙啊,可以做的骚操作好多
2019年7月24日 10:22 | # | 引用
imyhui 说:
实际上这完全可以当做一个Linux服务器来使用,带个蓝牙键盘随时随地开发运维了hhh,就是。。。屏幕有点小
2019年7月24日 12:32 | # | 引用
waleslau 说:
HTTP和FTP是不同的协议,FTP是专门用来在网络上传文件的,全名叫文件传输协议(File Transfer Protocol),而HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,本文中这个例子是HTTP协议的一种基本功能罢了,通过www服务器把文件公开到局域网内,这样同一个局域网的设备就能获取到你的文件了
2019年7月24日 13:50 | # | 引用
frank 说:
那要怎麼把文件搬到桌面呢?
cp?
2019年7月24日 15:51 | # | 引用
袅残烟 说:
为啥不直接用手机上面的AirDroid
2019年7月24日 19:35 | # | 引用
清水 说:
阮大神,有没有http大文件下载的解决方案?服务端限制每次只能下载100M,对于超过100M的文件,有分片下载的方案么
2019年7月25日 10:01 | # | 引用
abc 说:
阮老师,要是能介绍介绍中国的历法, 日期的起源什么的就太好了。
一直都理解不了,感觉真的太神奇了,天文跟日期历法高度结合一起。
2019年7月25日 16:45 | # | 引用
杨程 说:
我有个问题 手机键盘没有ctrl-c 怎么把server关掉?
2019年7月25日 21:24 | # | 引用
CharlseChen 说:
在执行apt upgrade之前需要使用termux-setup-storage授权,不然会提示abort
2019年7月26日 09:33 | # | 引用
读者027 说:
微信和QQ都可以,您可以继续使用。谢谢
=====================================
建议阁下将原回答反问句修改为陈述句,即“微信和QQ也可以传输文件。”
寄希望技术博客保持纯净,阮老师的文章大家可以自由选择是否阅读,介绍的各种工具或者技术可以自由决定使用或者不使用,根据文章内容可以提出各自观点,个人认为抬杠没有必要。
2019年7月26日 14:09 | # | 引用
读者027 说:
建议再次阅读文章后发表评论,很显然阮老师文中说的是共享手机文件到电脑上。
2019年7月26日 14:12 | # | 引用
读者027 说:
Termux有个自带的软键盘,包含ctrl在内的一些符号,可以方便的ctrl+c,开启方法为:手机触屏左上侧向右滑动。具体方法可以百度一下,全面屏手势可能会影响该操作。
2019年7月26日 14:19 | # | 引用
读者027 说:
文章开头一段写到,“普通用户可以使用手机线,将手机和电脑连起来。作为开发者,其实有更方便的方法,就是在手机架设一个 HTTP 服务,然后从桌面浏览器访问手机。”其中有“作为开发者,其实有更方便的方法”字样,表明该方法可能更方便,但并没有强迫或者威胁读者放弃使用数据线AirDroid和QQ微信等方式,阁下可以继续合法使用AirDroid,谢谢
2019年7月26日 14:25 | # | 引用
兰哒 说:
使用ipad有类似的工具吗,
ipad 能不能安装nodejs
2019年7月28日 14:31 | # | 引用
KnifeFire 说:
那个……Termux有pkg的原因是Termux官方源只保留newest的包,不update就有概率出现missing。
2019年7月28日 17:34 | # | 引用
ryuusennka 说:
大概是协议的不同吧
2019年7月29日 17:10 | # | 引用
Machao 说:
如果有外网ip,是不是可以做到非局域网也可以访问了?
2019年7月31日 10:38 | # | 引用
bailz1911 说:
不错不错,现在手机都有ipv6地址了,正想测试下连通效果如何。谢谢你的好文章
2019年8月 1日 10:21 | # | 引用
hyg 说:
termux-setup-storage无法唤出手机储存权限,请问大神这是什么问题
2019年8月 4日 12:07 | # | 引用
cr 说:
https://www.coolapk.com/apk/com.example.ryanc.andserv
这个软件更好用,思路一样的,搭建手机端web服务
2019年8月 7日 16:41 | # | 引用
geek42 说:
我一直就这么做的 蓝牙键盘推荐航世的HB199 然后他还带个telnetd和sshd 你可以把手机只是当作一个保存了你个人密钥的链接设备 在任何地方连上手机 然后登录服务器或者干别的 这招在公共场所非常好
2019年8月28日 12:36 | # | 引用
王大痣 说:
ios有没有类似Termux的东西
2019年9月17日 15:40 | # | 引用
jackjoe 说:
为什么不用数据线?
2019年9月27日 14:27 | # | 引用
chengs 说:
termux-setup-storage
这个命令运行没反应什么情况
2020年4月21日 19:56 | # | 引用
zhao 说:
现在手机有远程管理吧
2020年5月28日 16:25 | # | 引用
ZZY2357 说:
serve 这个工具也蛮不错的,起码页面好看一点
npm i -g serve
2020年8月 6日 21:24 | # | 引用
ㄌㄌ45D 说:
一定要在電腦上才能開嗎
手機裡面的資料夾找不到阿
2020年10月 2日 16:29 | # | 引用
不夜仙 说:
用三星dex体验了一把,真的很有感觉哈哈哈
2022年8月15日 09:21 | # | 引用
樱桃小丸子 说:
可以上传文件到termux手机里面去吗,我搭好了,只能下载到电脑,想把电脑的文件上传到手机要怎么实现?
2023年5月29日 09:52 | # | 引用
yyds2077 说:
很好用 蛮神奇的
2024年7月29日 20:30 | # | 引用
黄花鱼 说:
fdroid下载 unexpected keyboard
2024年8月13日 11:32 | # | 引用