qrcp README

The project's README from github.com/claudiodangelis/qrcp. As one markdown file: README.md.

Logo

$ qrcp

Transfer files over Wi-Fi from your computer to a mobile device by scanning a QR code without leaving the terminal.

Go Report Card

Join the Telegram channel qrcp_dev or the @qrcp_dev Twitter account for news about the development.


How does it work?

Screenshot

qrcp binds a web server to the address of your Wi-Fi network interface on a random port and creates a handler for it. The default handler serves the content and exits the program when the transfer is complete. When used to receive files, qrcp serves an upload page and handles the transfer.

The tool prints a QR code that encodes the text:

http://{address}:{port}/{random_path}

Most QR apps can detect URLs in decoded text and act accordingly (i.e., open the decoded URL with the default browser), so when the QR code is scanned, the content will begin downloading by the mobile browser.

Demo

Send files to mobile:

screenshot

Receive files from mobile:

Screenshot


Installation

Using Go (Latest Development Version)

Requires Go 1.18 or later:

go install github.com/claudiodangelis/qrcp@latest

Prebuilt Binaries

Download the latest release for your platform from the Releases page.

Platform Instructions
Linux Extract the .tar.gz archive, move the binary to /usr/local/bin, and set permissions.
Windows Extract the .tar.gz archive and place the .exe file in a directory in your PATH.
macOS Extract the .tar.gz archive, move the binary to /usr/local/bin, and set permissions.

Package Managers

Platform Package Manager Command
Linux ArchLinux (AUR) yay -S qrcp-bin or yay -S qrcp
Linux Debian/Ubuntu sudo dpkg -i qrcp_<version>_linux_x86_64.deb
Linux CentOS/Fedora sudo rpm -i qrcp_<version>_linux_x86_64.rpm
Windows WinGet winget install --id=claudiodangelis.qrcp -e
Windows Scoop scoop install qrcp
Windows Chocolatey choco install qrcp
macOS Homebrew brew install qrcp

Confirm Installation

After installation, verify that qrcp is working:

qrcp --help

Usage

Send Files

Action Command Example
Send a file qrcp MyDocument.pdf
Send multiple files qrcp MyDocument.pdf IMG0001.jpg
Send a folder qrcp Documents/
Zip before transferring qrcp --zip LongVideo.avi

Receive Files

Action Command Example
Receive to current directory qrcp receive
Receive to a specific directory qrcp receive --output=/tmp/dir

Configuration

qrcp works without prior configuration, but you can customize it using a configuration file or environment variables.

Configuration File

The default configuration file is stored in $XDG_CONFIG_HOME/qrcp/config.yml. You can specify a custom location using the --config flag:

qrcp --config /tmp/qrcp.yml MyDocument.pdf

Configuration Options

Key Type Description
interface String Network interface to bind the web server to. Use any to bind to 0.0.0.0.
bind String Address to bind the web server to. Overrides interface.
port Integer Port to use. Defaults to a random port.
path String Path to use in the URL. Defaults to a random string.
output String Default directory to receive files. Defaults to the current working directory.
fqdn String Fully qualified domain name to use in the URL instead of the IP address.
keep-alive Bool Keep the server alive after transferring files. Defaults to false.
secure Bool Use HTTPS instead of HTTP. Defaults to false.
tls-cert String Path to the TLS certificate. Used only when secure: true.
tls-key String Path to the TLS key. Used only when secure: true.

Environment Variables

All configuration parameters can also be set via environment variables prefixed with QRCP_:


Advanced Usage

Network Interface

To use a specific network interface:

qrcp -i tun0 MyDocument.pdf

To bind the web server to all interfaces:

qrcp -i any MyDocument.pdf

HTTPS

Enable secure transfers with HTTPS by providing a TLS certificate and key:

qrcp --tls-cert /path/to/cert.pem --tls-key /path/to/cert.key MyDocument.pdf

Shell Completion

qrcp provides shell completion scripts for Bash, Zsh, and Fish.

Shell Command Example
Bash source <(qrcp completion bash)
Zsh qrcp completion zsh > "${fpath[1]}/_qrcp"
Fish `qrcp completion fish

Authors and Credits


Clones and Similar Projects

Project Name Description
qr-fileshare A similar idea executed in NodeJS with a React interface.
instant-file-transfer (Uncredited) Node.js project similar to this.
qr-filetransfer Python clone of this project.
qr-filetransfer Another Node.js clone of this project.
qr-transfer-node Another Node.js clone of this project.
QRDELIVER Node.js project similar to this.
qrfile Transfer files by scanning a QR code.
quick-transfer Node.js clone of this project.
share-file-qr Python re-implementation of this project.
share-files (Uncredited) Yet another Node.js clone of this project.
ezshare Another Node.js two-way file sharing tool supporting folders and multiple files.
local_file_share "Share local file to other people, OR smartphone download files which is in PC."
qrcp A desktop app clone of qrcp, written with C# and .NET Core, works for Windows.
swift_file Rust project inspired by qrcp.
qrcp-android Android app inspired by qrcp.

License

MIT. See LICENSE.

qrcp (claudiodangelis/qrcp)

Searching Database…

10.5K ·GitHub
这是干什么的?qrcp 是一个终端工具,可以通过 Wi-Fi 把电脑上的文件发到手机:它会打印一个二维码,你扫码后,下载就直接在手机浏览器里开始了。
怎么在电脑上安装它?可以从 Releases 页面下载预编译的二进制文件,或者用包管理器安装:macOS 上用 brew install qrcp,Windows 上用 winget/Scoop/Chocolatey,Linux 上用 AUR 或 .deb/.rpm 包。如果装有 Go 1.18+,也可以从源码安装。
除了工具本身还需要什么?什么都不需要:它是一个独立的单一二进制文件,唯一的要求是电脑和手机连在同一个 Wi-Fi 网络里。
手机上需要装什么吗?不需要——qrcp 只在电脑上运行。手机只要用摄像头对准二维码,编码在里面的网址就会在手机浏览器中打开,用来下载或上传文件。
传输是加密的吗?默认情况下是普通 HTTP,由你自己的电脑在局域网内提供服务。把 secure 设为 true,并同时配置 TLS 证书和密钥,就可以切换成 HTTPS。
传输完成后会发生什么?网页服务器会自动关闭,qrcp 也会自行退出。如果想让它在后续传输时保持运行,可以在配置文件里把 keep-alive 设为 true。
为什么要用二维码,而不是手动输入地址?二维码里编码的只是传输网址,而手机摄像头可以直接把这类网址在浏览器中打开——扫一下,文件页面立刻就出现了。不用输入 IP,不用数据线,中间也不经过任何云服务。
有图形界面版本或其他设备的版本吗?有,README 里列出了很多克隆版本:Windows 上的 C#/.NET 桌面应用、受 qrcp 启发的 Android 应用,以及 Node.js 或 Python 的重新实现,比如 qr-filetransfer 和 ezshare。
What are similar projects?dufs, http-server, amazing-qr, caddy, oha, wuzz, CloudflareSpeedTest, zlib
Size
25.9 MB
Stars
10.5K
Age
8y
Commits · 90 Days