/qr-filetransfer

:zap: Transfer files over wifi from your computer to your mobile device by scanning a QR code without leaving the terminal.

Primary LanguageGoMIT LicenseMIT

qr-filetransfer

Logo

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

Go Report Card

Desktop to mobile

screenshot

Mobile to desktop

Screenshot

Install

Go 1.8 is required to run.

go get github.com/claudiodangelis/qr-filetransfer

Installation through a package manager

AUR (Arch Linux)

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

Screenshot

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.

Join us!

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

License

MIT. See LICENSE.