Search code examples
mobilefile-transferbittorrentrobustminio

Robust mobile app file sharing


Requirement

Mobile app uploads file to server. A limited number of other users of the mobile app then download the same file. Given the network limitations of a mobile environment (patchy connections / limited and varying bandwidth), I would like the uploads and subsequent downloads to be as robust as possible, without repeating work if the file transfer fails. The files will typically be between 1-5MB in size. Mobile solution has to fit with React Native. Server side solution could be anything. Number of files transferred could be huge if the app takes off, equally minimal if it doesn't :-)

Potential Solutions Investigated

Bittorrent - having a tracker on the server, the mobile client publishing a torrent to the server which is picked up by something like rtorrent then uploaded. Server informs the apps on other devices of the torrent details and they request it from the server. Is this realistic? If so, I'm going to need help in ironing out the detail. Could be variations on the theme - e.g. file upload not bittorrent, but file download is.

Minio - this sounds like a great solution, but looking briefly at the .NET code for more detail, it only does a multi-part http upload for file sizes greater than 5MB.

Any help greatly appreciated.


Solution

  • InterPlanetary File System (IPFS) is a protocol and network designed to create a content-addressable, peer-to-peer method of storing and sharing hypermedia in a distributed file system.

    https://en.wikipedia.org/wiki/InterPlanetary_File_System