Transfer files over Wi-Fi from your computer to a mobile device by scanning a QR code without leaving the terminal.
You can support development by donating with .
Join the Telegram channel qrcp_dev for news about the development.
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.
Send files to mobile:
Receive files from mobile:
Note: it requires go 1.8
go get github.com/claudiodangelis/qrcp
Download the latest Linux .tar.gz archive from the Releases page, extract it, move the binary to the proper directory, then set execution permissions.
# Extract the archive
tar xf qrcp_0.5.0_linux_x86_64.tar.gz
# Copy the binary
sudo mv qrcp /usr/local/bin
# Set execution permissions
sudo chmod +x /usr/local/bin/qrcp
Packages available on AUR:
Download the latest .deb package from the Releases page, then run dpkg
:
sudo dpkg -i qrcp_0.5.0_linux_x86_64.deb
# Confirm it's working:
qrcp version
Download the latest .rpm package from the Releases page, then run rpm
:
sudo rpm -i qrcp_0.5.0_linux_x86_64.rpm
# Confirm it's working:
qrcp --help
Download the latest Windows .tar.gz archive from the Releases page and extract the EXE file.
Download the latest macOS .tar.gz archive from the Releases page, extract it, move the binary to the proper directory, then set execution permissions.
# Extract the archive
tar xf qrcp_0.5.0_macOS_x86_64.tar.gz
# Copy the binary
sudo mv qrcp /usr/local/bin
# Set execution permissions
sudo chmod +x /usr/local/bin/qrcp
# Confirm it's working:
qrcp --help
qrcp MyDocument.pdf
When sending multiple files at once, qrcp
creates a zip archive of the files or folders you want to transfer, and deletes the zip archive once the transfer is complete.
# Multiple files
qrcp MyDocument.pdf IMG0001.jpg
# A whole folder
qrcp Documents/
You can choose to zip a file before transferring it.
qrcp --zip LongVideo.avi
When receiving files, qrcp
serves an "upload page" through which you can choose files from your mobile.
qrcp receive
# Note: the folder must exist
qrcp receive --output=/tmp/dir
qrcp
works without any prior configuration, however, you can choose to configure to use specific values. The config
command launches a wizard that lets you configure parameters like interface, port, fully-qualified domain name and keep alive.
qrcp config
Note: if some network interfaces are not showing up, use the --list-all-interfaces
flag to suppress the interfaces' filter.
qrcp --list-all-interfaces config
By default qrcp
listens on a random port. Pass the --port
(or -p
) flag to choose a specific one:
qrcp --port 8080 MyDocument.pdf
qrcp
will try to automatically find the suitable network interface to use for the transfers. If more than one suitable interface is found ,it asks you to choose one.
If you want to use a specific interface, pass the --interface
(or -i
) flag:
# The webserver will be visible by
# all computers on the tun0's interface network
qrcp -i tun0 MyDocument.dpf
You can also use a special interface name, any
, which binds the web server to 0.0.0.0
, making the web server visible by everyone on any network, even from an external network.
This is useful when you want to transfer files from your Amazon EC2, Digital Ocean Droplet, Google Cloud Platform Compute Instance or any other VPS.
qrcp -i any MyDocument.pdf
qrcp
uses two patterns for the URLs:
- send:
http://{ip address}:{port}/send/{random path}
- receive:
http://{ip address}:{port}/receive/{random path}
A few options are available that override these patterns.
Pass the --path
flag to use a specific path for URLs, for example:
# The resulting URL will be
# http://{ip address}:{port}/send/x
qrcp --path=x MyDocument.pdf
Pass the --fqdn
(or -d
) to use a fully qualified domain name instead of the IP. This is useful in combination with -i any
you are using it from a remote location:
# The resulting URL will be
# http://example.com:8080/send/xYz9
qrcp --fqdn example.com -i any -p 8080 MyRemoteDocument.pdf
It can be useful to keep the server alive after transferring the file, for example, when you want to transfer the same file to multiple devices. You can use the --keep-alive
flag for that:
# The server will not shutdown automatically
# after the first transfer
qrcp --keep-alive MyDocument.pdf
qrcp, originally called qr-filetransfer, started from an idea of Claudio d'Angelis (@daw985 on Twitter), the current maintainer, and it's developed by the community.
Logo is provided by @arasatasaygin as part of the openlogos initiative, a collection of free logos for open source projects.
Check out the rules to claim one: rules of openlogos.
Releases are handled with goreleaser.
- 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 C++ clone of
qrcp
with a GUI
MIT. See LICENSE.
qrcp's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.