qr-filetransfer
Transfer files over Wi-Fi from your computer to a mobile device by scanning a QR code without leaving the terminal.
Desktop to mobile
Mobile to desktop
Install
Go 1.8 is required to run.
go get github.com/claudiodangelis/qr-filetransfer
Installation through a package manager
How does it work?
qr-filetransfer
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.
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.
Usage
Note: Both the computer and device must be on the same Wi-Fi network.
On the first run, qr-filetransfer
will ask to choose which network interface to use to transfer the files. Choose the network interface connected to your Wi-Fi:
$ qr-filetransfer /tmp/file
Choose the network interface to use (type the number):
[0] enp3s0
[1] wlp0s20u10
Note: On Linux it usually starts with wl
.
The chosen network will be saved and no more setup is necessary, unless the -force
argument is passed, or the .qr-filetransfer.json
file the program stores in the home directory of the current user is deleted.
Two transfers mode are supported: desktop-to-mobile and mobile-to-desktop
Desktop to Mobile
Transfer a single file
qr-filetransfer /path/to/file.txt
Zip the file, then transfer it
qr-filetransfer -zip /path/to/file.txt
Transfer a full directory. Note: the directory is zipped by the program before being transferred
qr-filetransfer /path/to/directory
Mobile to Desktop
If you want to use it the other way, you need to pass the -receive
flag.
The first argument is the directory you want to transfer mobile files to.
qr-filetransfer -receive ~/Downloads
Specify the port to use for the web server
qr-filetransfer -port=8080 /path/to/my-file
Note: if the -port
argument is passed, the value is stored and used for all future transfers. Use -force
to reset the stored port value.
Tips & Tricks
Keep server alive
If you are trying to transfer a file that the browser on the receiving end is considering harmful, you can be asked by the browser if you really want to keep the file or discard it; this condition (browser awaiting your answer) can lead to qr-filetransfer disconnection. To prevent qr-filetransfer from disconnecting, use the -keep-alive
flag:
qr-filetransfer -keep-alive /path/to/my/totally/cool.apk
Arguments
-debug
increases verbosity-quiet
ignores non critical output-force
ignores saved configuration-zip
zips the content before transferring it-port
sets port to bind the server to-receive
enables transfers from mobile to desktop-keep-alive
keeps the server alive after completing the transfer
Authors
qr-filetransfer started from an idea of Claudio d'Angelis (@daw985 on Twitter), the current maintainer, and it's developed by the community.
Logo Credits
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.
Clones and Similar Projects
- 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
License
MIT. See LICENSE.