通过扫描QR码在计算机和移动设备之间传输文件
计算机和移动设备之间的文件传输可以以各种方法和各种协议完成。
今天,我们将看到一个全新的,不同的方法。
本教程介绍如何通过扫描QR码来在计算机和移动设备之间传输文件。
是的,你看的没错!向QRCP表示你好,以前称为QR-FileTransfer,一个简单的命令行文件传输应用程序,用于通过扫描QR码在Linux系统和移动电话之间发送和接收WiFi,而不会离开终端。
发送文件时,QRCP将在随机端口上将Web服务器绑定到WiFi网络接口卡的地址,并为其创建处理程序。
一旦传输完成,默认处理程序将提供内容并退出程序。
同样,在接收文件时,"QRCP"服务上传页面并处理传输。
QRCP是一种免费的,开源程序,并以Go编程语言编写,并在MIT许可证下发布。
在Linux上安装QRCP
QRCP可以多种方式安装。
使用以下任何一种方法在Linux中安装QRCP。
用golang安装qrcp
首先,如下链接中所述,在Linux系统中安装Go编程语言。
- 如何在Linux中安装Go语言
安装golang后,请在Linux系统中运行以下命令以在Linux系统中安装QRCP:
$go get github.com/claudiodangelis/qrcp
从二进制文件中安装QRCP
从发布页面下载最新的QRCP归档文件。
撰写本教程,最新版本为0.7.0。
$wget https://github.com/claudiodangelis/qrcp/releases/download/0.7.0/qrcp_0.7.0_linux_x86_64.tar.gz
使用Commad提取下载的存档:
$tar xf qrcp_0.7.0_linux_x86_64.tar.gz
将二进制文件移动到'$path':
$sudo mv qrcp /usr/local/bin
最后,设置可执行权限:
$sudo chmod +x /usr/local/bin/qrcp
请注意,最后一步是可选的。
我们不必使其可执行。
在这种情况下,在将其移动到路径后,文件将变得可执行。
使用包管理器安装QRCP
QRCP在AUR中提供。
- QRCP-BIN.
- QRCP.
我们可以使用任何AUR助手安装它,例如YAY。
$yay -S qrcp
或者,
$yay -S qrcp-bin
QRCP也可用作'.deb'和'.rpm'文件。
转到"发布"页面并为发行版下载合适的版本。
如果我们在基于Debian的系统上,请从"版本"页面下载".deb"安装文件,并将其安装如下。
$sudo apt install gdebi
$sudo gdebi qrcp_0.7.0_linux_x86_64.deb
在基于RPM的系统上,例如CentOS,Rhel,从版本页面下载'.rpm'文件并将其安装如下:
$sudo dnf install qrcp_0.7.0_linux_x86_64.rpm
或者,
$sudo rpm -ivh qrcp_0.7.0_linux_x86_64.rpm
安装后,通过运行此命令确认QRCP是否正常工作:
$qrcp version qrcp 0.7.0 [date: 2017-10-08T13:30:56Z]
通过扫描QR码,使用QRCP在计算机和移动设备之间传输文件
使用QRCP在计算机和移动设备之间传输文件非常简单!
出于本教程的目的,我将使用Ubuntu 20.04 LTS桌面系统和Android Tablet PC。
确保我们在手机上安装了QR码阅读器应用程序。
有很多QR码读卡器可供Android。
请快速网络搜索,并在手机上安装我们选择的任何QR码阅读器。
使用QRCP将文件从计算机发送到移动设备
首先,让我们了解如何从Linux系统发送文件到移动。
我将使用命令从我的Ubuntu桌面发送图像文件到平板电脑:
$qrcp theitroad.png
当我们第一次启动QRCP时,它将扫描系统,以查找系统中可用的WiFi网络接口的数量。
如果有多个合适的WiFi卡可用,QRCP会要求我们选择一个传输文件。
在我的情况下,我选择了无线界面:"WLP9S0"。
点击Enter键接受无线接口。
QRCP将记住这一选择,下次不会问。
Use the arrow keys to navigate: ↓ ↑ → ← ? Choose interface: ▸ wlp9s0 (192.168.225.37) virbr0 (192.168.122.1) mpqemubr0 (10.39.86.1) any (0.0.0.0)
我们现在将在终端中看到QR码,如下所示。
✔ wlp9s0 (192.168.225.37) Scan the following URL with a QR reader to start the file transfer: http://192.168.225.37:41377/send/7jwi █████████████████████████████████████ █████████████████████████████████████ ████ ▄▄▄▄▄ ██▄ ▄███▄▄█▀▄▄█ ▄▄▄▄▄ ████ ████ █ █ █ ▀▀ ██▄█▄▀██▄█ █ █ ████ ████ █▄▄▄█ █ ██▄█ █▀▄█ █ █▄▄▄█ ████ ████▄▄▄▄▄▄▄█ ▀▄█▄▀▄▀▄█ █ █▄▄▄▄▄▄▄████ ████ ▀ ▄▄▄█▀▀▀███▄ ▄█▀ █▀ ▄▄█▀████ ████▀█▄ ▀▄▄ ██ ▀█▀█▀▀ ▀▀▄▀ ▀██▀█████ ████▀▀▄▄▄▀▄▄▀█▄▀█▀▀▄ █▄▄▀ ▀▄▄▄ █▀████ ████ █▀ █▄▀▀ █ █ ▄▄ ▄█ █ ▀█ █▄▀█████ ████ █▀ ██▄▄▄▄█ ▀█▄▄█▄▄█ █▄█▀▀ █▀████ ████ █▄█▀▄▄▄█ █ ▄█▀█▀▄▀▀▀█▄█ ▄▄▀█████ ████▄█▄▄▄▄▄▄ ▄▄▀▀▀▀▄ ██▀ ▄▄▄ ▀ ████ ████ ▄▄▄▄▄ █▀▄█▀█ ▄▄▄ ▀ █▄█ ▄▄█▀████ ████ █ █ █ ▀▀▄█▄▄ ▄▀ ▄ ▄█▀█████ ████ █▄▄▄█ █▄▄█▀ ▄██▄▀▄ ▀█▄▀██ █████ ████▄▄▄▄▄▄▄█▄█▄█▄▄▄▄█████▄█▄█████████ █████████████████████████████████████ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
现在,在手机中打开QR码阅读器应用程序,并扫描Linux计算机终端中显示的QR码。
扫描QR码后,我们将在手机中看到下载URL。
只需单击它即可下载文件。
该文件将在手机中的默认下载文件夹中下载。
我们也可以发送多个文件:
$qrcp file1 file2
并且整个文件夹可以如下发送:
$qrcp ~/Documents/
如果文件的大小很大,只需zip它并发送"--zip"标志:
$qrcp --zip movie.mp4
使用qrcp从移动到计算机收到文件
要将文件从移动设备发送到计算机,请在Linux系统的终端中运行以下命令:
$qrcp receive
我们将在终端中看到QR码:
Scan the following URL with a QR reader to start the file transfer: http://192.168.225.37:35221/receive/3xiz █████████████████████████████████████ █████████████████████████████████████ ████ ▄▄▄▄▄ ██ █ ▀ ▄██ ▄█ ▄▄▄▄▄ ████ ████ █ █ █ ▀█▄▀ ▄▀▄█▄▄██ █ █ ████ ████ █▄▄▄█ █ ▄█ ██▄▀▄▀█▀█ █▄▄▄█ ████ ████▄▄▄▄▄▄▄█ █ ▀▄█▄█ █ ▀▄█▄▄▄▄▄▄▄████ ████ ▀▄▄▄ ▄▀█▄ █ ▀█▄▄█▀▀█▀ ▄▄█▀████ ████ ▄▄▀▀█▄ █▄▀▄▄ ▄▄▄▀ ▀▀▄▀ ▀██▀█████ ██████▀█▄▄▄▀█ ▄█ █▄▄ █▀▄▀ ▀▄▄▄ █▀████ ████▄ █ █▄▄█ █▀██▄█ █ ▀█ █▄▀█████ ████ ▀▀▀█▀▄▀▀▀▀█▄▀▀ ▄ █ █▄█▀▀ █▀████ ████ █ ▀▀█▄ █ █▀ ▄▄▀▄▀▀▀█▄█ ▄▄▀█████ ████▄█▄██▄▄█ ▄ ▄▀█▄▄▀██▀ ▄▄▄ ▀ ████ ████ ▄▄▄▄▄ █▀█▄█▄█▀▄ ▄▀ █▄█ ▄▄█▀████ ████ █ █ █ █▀▀▀ ▄▄▄ ▄ ▄█▀█████ ████ █▄▄▄█ █▄██▄█▄██▀▄▀▄ ▀█▄▀██ █████ ████▄▄▄▄▄▄▄█▄▄▄▄███▄▄████▄█▄█████████ █████████████████████████████████████ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
在移动设备中打开QR码读取器并扫描上述QR码。
单击URL以从手机上传文件:
新的浏览器窗口将在手机中打开。
选择要从手机发送到计算机的文件,然后单击"传输"按钮:
成功文件传输后,我们将在移动设备上看到以下消息:
在Linux终端上,我们将在文件传输完成后看到以下消息:
Transferring file: /home/sk/IMG-20171017-WA0002.jpg /home/sk/IMG-20171017-WA0002.jpg[===============================================] 99.74% 0s File transfer completed
如我们所见,该文件在当前目录中下载。
如果要将文件接收到特定目录,请使用"--output"标志:
$qrcp receive --output=~/Downloads
在这种情况下,所有文件将在"~/下载"目录中下载。
QRCP选项
QRCP需要零配置。
默认情况下,QRCP将在没有任何先前配置的情况下运行开箱即用。
但是,我们可以在QRCP参数的帮助下在某些方面调整QRCP的功能。
例如,我们可以使用特定端口而不是随机端口,指定配置文件的位置,使用特定的网络接口卡进行文件传输,使用自定义URL用于发送/接收文件,使用FQDN而不是IP地址,打印QR码浏览器,请保持服务器活动,并通过HTTPS等安全传输文件。
配置QRCP.
默认配置文件存储在'$home/.qrcp.json'中。
QRCP将在传输文件时读取并使用此文件中定义的参数。
我们可以使用"cat"命令查看当前已配置的参数:
$cat $HOME/.qrcp.json { "fqdn": "", "interface": "wlp9s0", "port": 0, "keepAlive": false, "path": "~/Desktop", "secure": false, "tls-key": "", "tls-cert": "" }
通过运行以下命令,我们可以根据我们的喜好配置QRCP默认参数:
$qrcp config
选择要用于文件传输的合适无线网络接口:
? Choose interface: mpqemubr0 (10.39.86.1) ▸ wlp9s0 (192.168.225.37) virbr0 (192.168.122.1) any (0.0.0.0)
如果由于某种原因没有看到网络接口,请使用以下命令(而不是:
$qrcp --list-all-interfaces config
输入完全限定的名称(FQDN):
✔ Choose fully-qualified domain name: sk.theitroad.example
选择随机端口:
✔ Choose port, 0 means random port: 8080
如果要使用随机端口,只需按"0"(零)。
输入目标路径以保存文件/文件夹:
✔ Choose path, empty means random: ~/Downloads
默认情况下,QRCP将在当前目录中保存收到的文件/文件夹。
如果要在文件传输后保持服务器,请选择:
? Should the server keep alive after transferring?: ▸ No Yes
如果要安全传输文件,请选择适当的选项:
? Should files be securely transferred with HTTPS?: ▸ No Yes
如果选择"是",则必须输入TLS证书路径和TLS证书密钥。
更新配置文件后,将使用新值更新默认配置。
Configuration updated: { "fqdn": "sk.theitroad.example", "interface": "wlp9s0", "port": 8080, "keepAlive": false, "path": "~/Downloads", "secure": false, "tls-key": "", "tls-cert": "" }
QRCP将在传输文件时使用这些新值。
我们还可以手动使用自定义参数而不是配置文件中定义的现有参数。
使用自定义端口
QRCP将在计算机和移动设备之间发送和接收文件时使用任何随机可用端口。
如果要使用某个端口,例如"8080",在传输文件时,请使用'--port'或者'-p'标志:
$qrcp --port 8080 file.txt
指定配置文件的位置
如前所述,默认配置文件存储在'$home/.qrcp.json'中。
如果要使用存储在不同位置的配置文件,请使用"--config"标志指定其路径:
$qrcp --config ~/Downloads/qrcp.json file.txt
使用特定的WiFi接口进行文件传输
如果系统中有多个合适的WiFi接口,则可以使用" - 接口"(或者'-i')标志使用特定的WiFi接口进行文件传输:
$qrcp -i wlp9s0 file.txt
为URL分配特定路径
默认情况下,QRCP使用以下URL格式发送和接收文件:
- 发送 - 'http://{ip地址}:{port}/send/{随机路径}'
- 接收 - 'http://{ip地址}:{port} /接收/{随机路径}'
如果要使用URL的特定路径,而不是随机路径,请使用"-path"标志:
$qrcp --path=abcd file.txt
现在,生成的URL将是:
$http://{ip address}:{port}/send/abcd
使用FQDN而不是IP地址
默认情况下,QRCP将在URL中使用Linux系统的IP地址。
如果我们想在URL中使用完全限定的名为而不是IP地址,请使用"--fqdn"(或者'-d')标志:
$qrcp --fqdn theitroad.example -i wlp9s0 -p 8080 file.txt
在浏览器中打印QR码
QRCP将在终端中生成QR码。
如果要打印终端窗口外的QR,请使用"--browser"标志。
$qrcp --browser file.txt
此命令仍将在终端中打印QR码,但也将在默认Web浏览器的新窗口中显示QR码。
保持服务器活着
完成文件传输后,连接将自动关闭。
因此,其他设备才能访问该文件/文件夹。
如果要将相同的文件/文件夹转换为多个设备,请使用"-keep-allive"标志保持服务器活动:
$qrcp --keep-alive file.txt
得到帮助
要查看可用子命令和标志的列表,请运行:
$qrcp --help Usage: qrcp [flags] qrcp [command] Available Commands: completion Generate completion script config Configure qrcp help Help about any command receive Receive one or more files send Send a file(s) or directories from this host version Print version number and build information. Flags: -b, --browser display the QR code in a browser window -c, --config string path to the config file, defaults to $HOME/.qrcp -d, --fqdn string fully-qualified domain name to use for the resulting URLs -h, --help help for qrcp -i, --interface string network interface to use for the server -k, --keep-alive keep server alive after transferring -l, --list-all-interfaces list all available interfaces when choosing the one to use --path string path to use. Defaults to a random string -p, --port int port to use for the server -q, --quiet only print errors -s, --secure use https connection --tls-cert string path to TLS certificate to use with HTTPS --tls-key string path to TLS private key to use with HTTPS -z, --zip zip content before transferring Use "qrcp [command] --help" for more information about a command.