Git Product home page Git Product logo

ezshare's Introduction

A simple file server that lets you easily share many big files like photos and videos with friends (or between your devices) over a local network without requiring an internet connection. It starts an HTTP server that lists all files and directories in the directory where it is started from. Then anyone can then connect to the server and download files or automatically generated ZIP of whole directories (kind of like Google Drive.) The client can also upload files to the server via their browser, and clipboard card be shared both ways. A QR code is generated for convenience.

Demo

Features

  • Local two-way transfers without going through the internet
  • Send full quality photos and videos to others without needing a fast internet connection
  • Handles really big files and directories
  • Handles a LOT of files
  • Auto ZIPs directories on-the-fly
  • Two-way sharing of clipboard
  • The web client works on all major platforms, including iOS and Android (server must run on a Mac/Windows/Linux computer)

Install (with Node.js / npm)

  • Install Node.js and open a terminal:
npm install -g ezshare

Install (standalone)

If you don't want to install Node.js, you can download a zipped executable of ezshare:

Then extract the executable and put it in a folder where you can run it from the command line. You may have to right click the icon and then press "Open" first (on Mac.)

Usage

  • Open a terminal and run:
  • cd /path/to/your/shared/folder
  • ezshare
  • Open the browser in the other end to the printed URL
  • Start to upload or download files to/from this folder!
  • Note that the two devices need to be on the same WiFi (or possibly personal hotspot)

Alternatively you can pass it the path you want to share:

ezshare /your/shared/folder

For more info run ezshare --help

Supported platforms

  • The web client with all operating systems that have a modern browser. iOS, Android, Mac, Windows, ++
  • The command line application works on all major desktop OS (Mac, Windows, Linux)

Share over internet without NAT

If you want to share a file over internet, you can use a service like Ngrok or Cloudflare tunnels.

Ngrok:

ngrok http http://ip.of.ezshare:8080/

Cloudflare tunnel:

cloudflared tunnel --url http://ip.of.ezshare:8080/ --no-autoupdate

Then just share the URL you are given from one of these services.

More alternatives:

Release

  • Push and wait for green GitHub Actions
  • Run np and Save as draft in GitHub
  • Wait for GitHub Actions run
  • Edit draft to add release notes, and check that artifacts get added.

Credits

See also


Made with โค๏ธ in ๐Ÿ‡ณ๐Ÿ‡ด

More apps by mifi.no

Follow me on GitHub, YouTube, IG, Twitter for more awesome content!

ezshare's People

Contributors

dependabot[bot] avatar maxime-j avatar mifi avatar shhossain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ezshare's Issues

can't fast forward shared video file

I have problem where I can't fast forward the video, it resetting back to the current m:s.

if it already played for 10m, I can backward it to 5m, or etc

but I can't jump to x min.

Error - File size limit

Hello,

When I try to transfer some large files, it throws errors. Where I'm sending it, it doesn't stop, but when I'm receiving it, it shows an error when receiving the file, so much so that it disappears from the folder.

Is there any transfer size or quantity limit?

Don't trim filename

It trims the filename down to 100 bytes characters.


UPD:

...while uploading to the server.

Context menu option

Thank you for writing ezshare! It's a wonderful tool. I've got a Windows laptop and an iPhone, and getting data between them is always a nightmare. This basically fixes that. It's so easy and fast.

I've got an enhancement suggestion: could we get an "EZshare this folder" in the file explorer right-click context menu? I was able to automate it with a batch script, but maybe having an automatic registry editor could work better.

Uploading multiple files with firefox (mobile)

When I upload phone -> PC with firefox mobile and select multiple files at once, I instantly get a successful upload message but only some of the chosen files appear on my PC and are corrupt (0 bytes). It works fine with a single file as well as with chrome mobile.

Thanks a lot for the tool, it solves a big pain point for me :)

Uploaded Folders result loosing Folder Structure and renamed Files

When downloading a folder ezshare zips the contents automatically on the fly which is great.
But this doesn't happen when uploading from a client (e.g. Firefox/Chrome on Mac OS to a Windows PC running ezshare). Instead the folder structure will be flattened, all files renamed thus rendering everything pretty much useless if filenames and folders matter. They do!

e.g.
"Foldername/IMG_1234.JPG" results in the file "Foldername!IMG_1234.JPG"

Unclear if that

Transferring large files does not seem to work

i just tried to transfer a 7GB file to my computer via the browser host (from a computer which does not have ezshare installed) and when the upload completed nothing happened. a small image transferred just fine, though. is there a practical or enforced file size limit which is not mentioned in the readme and not checked for before uploading?

Bad Header recognized by BetterZip on Mac

I often get unpacking errors when downloading Folders from windows onto a Mac. The folder is received as a zip file. Ezshare zips files on the fly on the server side. It only happens with some folders but then consistently with them. So downloading again won't help.

EZShare on Windows
Downloading with Firefox on Mac
Unpacking with BetterZip 5.3.4 gives Header Errors and unpacking results in additional folders.
Unpacking with System integrated Archive Program works without errors being displayed.

Unclear if there is some incompatible Header which System Tool ignores and BetterZip complains about or an error on BetterZIP side.

Fetch clipboard from other side (files) fails

When I try to fetch clipboard from other side (which is actually on the same host running Debian 10)
I get an copy clipboard failed error.

The content of the client-clipboard-1609069044630.txt:

x-special/nautilus-clipboard
copy
file:///home/foo/bar/test/dvi%20(Kopie).jpg
file:///home/foo/bar/test/Foo

The error thrown in the terminal:

Error: Couldn't find the 'xsel' binary and fallback didn't work. On Debian/Ubuntu you can install xsel with: sudo apt install xsel
    at makeError (/snapshot/ezshare/node_modules/clipboardy/lib/linux.js:14:11)
    at xselWithFallback (/snapshot/ezshare/node_modules/clipboardy/lib/linux.js:31:10)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

Android version?

It would be great if I could install this on my Android TV box as well. BTW thanks. You are a wonderful dev!

Port 8080 is not working due to postgres sql

Please change the default sharing port to unique port like 5505 or 3001.
I'm unable to use ezshare on my pc due to postgres sql it was running on 8080 by default.
Please consider this, Thank You

Order of entries

Currently, files/directories are listed like in Github.
For example:

1
2
12
Z
a

I think it would be better to list them like that:

1
12
2
a
Z

What do you think?

It could be quickly done on server side (I can make a PR if wanted)
or a sort feature may be implemented in the frontend, but that may be overkill.

Support Arm64

Is it possible to create an executable for architecture Arm64?

imagen

wrong IP address in url

With the latest version 1.10.0 the displayed ip address in the url (in my case 172.19.0.1) is wrong:
image

Correct ip address should be 172.17.1.74:
image

Encryption

Either:

  1. Generate an encryption key during startup and put it in the URL. This has the disadvantage that if the user needs to type the URL, it will be longer. Or...
  2. Generate an encryption key and send it to the FIRST user that connects and loads the page. Then set the key in that user's local storage, and never send it again from the backend. The user will then use this key. Reset key next session. Maybe show a simple challenge (4 digit PIN) on the server, and make the client type this before handing the key.

After the key has been exchanged, we can encrypt all requests and responses, maybe similar to this:
https://github.com/mwiesmueller/express-crypto

Need to also verify that every request is coming from the one sender

In any case if an attacker sniffs the initial key exchange, they can intercept the data being sent

TypeError [ERR_INVALID_CHAR]

When I download a file with name in Japanese, node throws TypeError as follows.

"
TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Content-disposition"]
at ServerResponse.setHeader (_http_outgoing.js:488:3)
at ServerResponse.header (C:\Program Files\Nodejs\node_global\node_modules\ezshare\node_modules\express\lib\response.js:771:10)
at C:\Program Files\Nodejs\node_global\node_modules\ezshare\index.js:114:9
"

A question

Hello! I recently looked into this repo and found it really useful. I wanted to ask if this was still being maintained and if so I would really love to see more features.

Error sharing directory

I tried to share my F: directory, but not is showing in the browser. The console showed this error:

Error: EBUSY: resource busy or locked, lstat 'F:\DumpStack.log.tmp'

I run the application this way: "ezshare --port 8008 F:"

OS: Windows 10 x64
App Version: 1.8.3

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.