通过扫描QR码在计算机和移动设备之间传输文件

时间:2020-03-21 11:48:27  来源:igfitidea点击:

计算机和移动设备之间的文件传输可以以各种方法和各种协议完成。
今天,我们将看到一个全新的,不同的方法。
本教程介绍如何通过扫描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.