All Projects β†’ axeloz β†’ filesharing

axeloz / filesharing

Licence: GPL-3.0 license
Files sharing application made in PHP

Programming Languages

PHP
23972 projects - #3 most used programming language
Blade
752 projects

Projects that are alternatives of or similar to filesharing

Ffsend Api
πŸ“¬ A fully featured Firefox Send API client written in Rust.
Stars: ✭ 75 (+44.23%)
Mutual labels:  file-upload, file-sharing
Sharry
Sharry is a self-hosted file sharing web application.
Stars: ✭ 170 (+226.92%)
Mutual labels:  file-upload, file-sharing
Airlift
A self-hosted file upload and sharing service
Stars: ✭ 77 (+48.08%)
Mutual labels:  file-upload, file-sharing
Pomfe.co V1
Pomfe.co File Hosting Site Source Code
Stars: ✭ 31 (-40.38%)
Mutual labels:  file-upload, file-sharing
crocofile
A webbased file upload manager to share files by sharing an account
Stars: ✭ 40 (-23.08%)
Mutual labels:  file-upload, file-sharing
Updog
Updog is a replacement for Python's SimpleHTTPServer. It allows uploading and downloading via HTTP/S, can set ad hoc SSL certificates and use http basic auth.
Stars: ✭ 994 (+1811.54%)
Mutual labels:  file-upload, file-sharing
Fileshelter
FileShelter is a β€œone-click” file sharing web application
Stars: ✭ 132 (+153.85%)
Mutual labels:  file-upload, file-sharing
Pomf
Simple file uploading and sharing
Stars: ✭ 535 (+928.85%)
Mutual labels:  file-upload, file-sharing
Django-WebApp
This is a web-app created using Python, Django. By using this user can login, upload files and also can view and download files uploaded by other users.
Stars: ✭ 285 (+448.08%)
Mutual labels:  file-upload, file-sharing
odin
Open-source, cross-platform, hassle-free file sharing with AES-256 encryption made with Flutter & Dart.
Stars: ✭ 114 (+119.23%)
Mutual labels:  file-upload, file-sharing
Plik
Plik is a scalable & friendly temporary file upload system ( wetransfer like ) in golang.
Stars: ✭ 656 (+1161.54%)
Mutual labels:  file-upload, file-sharing
zipline
A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!
Stars: ✭ 215 (+313.46%)
Mutual labels:  file-upload, file-sharing
Ffsend
πŸ“¬ Easily and securely share files from the command line. A fully featured Firefox Send client.
Stars: ✭ 5,448 (+10376.92%)
Mutual labels:  file-upload, file-sharing
Linx Server
Self-hosted file/code/media sharing website. ~~~~~~~~~~~~~~~~~~~ Demo: https://demo.linx-server.net/
Stars: ✭ 1,044 (+1907.69%)
Mutual labels:  file-upload, file-sharing
Kodexplorer
A web based file manager,web IDE / browser based code editor
Stars: ✭ 5,490 (+10457.69%)
Mutual labels:  file-upload, file-sharing
Dfile
[Python + Flask] DFile: A fancy S3-based file sharing mode
Stars: ✭ 79 (+51.92%)
Mutual labels:  file-upload, file-sharing
Slate
WIP - An open source Filecoin storage and retrieval client that makes it easy to collect, organize, and share data anywhere.
Stars: ✭ 383 (+636.54%)
Mutual labels:  file-upload, file-sharing
Filestash
πŸ¦„ A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...
Stars: ✭ 5,231 (+9959.62%)
Mutual labels:  file-upload, file-sharing
Sharex
ShareX is a free and open source program that lets you capture or record any area of your screen and share it with a single press of a key. It also allows uploading images, text or other types of files to many supported destinations you can choose from.
Stars: ✭ 18,143 (+34790.38%)
Mutual labels:  file-upload, file-sharing
Transfer.sh
Easy file sharing from your Android device!
Stars: ✭ 14 (-73.08%)
Mutual labels:  file-upload, file-sharing

Files Sharing

Powered by Laravel

Description

This PHP application based on Laravel 5.4 allows to share files like Wetransfer. You may install it on your own server. It does not require any database system, it works with JSON files into the storage folder. It is multilingual and comes with english and french translations for now. You're welcome to help translating the app.

It comes with a droplet. You may drag and drop some files or directories into the droplet, your files will be uploaded to the server as a bundle.

A bundle is like a package containing is a various number of files. The bundle has a 2 weeks expiry date after the creation of the bundle. This value is not editable yet, this is a todo.

This application provides three links per upload bundle :

Each of these links comes with an authorization code. This code is the same for the preview and the download links. However it is different for the deletion link for obvious reasons.

The application also comes with a Laravel Artisan command as a background task who will physically remove expired bundle files of the storage disk. This command is configured to run every five minutes among the Laravel scheduled commands.

Sorry about the design, I'm not very good at this, you're welcome to help and participate.

Features

  • upload one or more files via drag and drop or via browsing your computer
  • creation of a bundle
  • ability to keep adding files to the bundle until you close your browser tab, the preview link remain untouched
  • bundle expiration after 2 weeks
  • sharing link with bundle content preview
  • ability to download a single file of the bundle or the entire bundle
  • direct download link (doesn't preview the bundle content)
  • deletion link for bundle owner
  • garbage collector which removes the expired bundles as a background task
  • multilingual (EN and FR)
  • easy installation, no database required
  • upload limitation based on client IP filtering
  • secured by tokens, authentication codes and non-publicly-accessible files
  • (very) early stage for theming support

Requirements

Basically, nothing more than Laravel itself:

  • PHP >= 5.6.4
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension

Plus:

  • JSON PHP Extension (included in PHP 5.2+)
  • ZipArchive PHP Extension (included in PHP 5.3+)

The application also uses:

Installation

  • configure your domain name. For example: files.yourdomain.com
  • clone the repo or download the sources into the webroot folder
  • configure your webserver to point your domain name to the public/ folder
  • run a composer install
  • run a npm install --production
  • make sure that the PHP process has write permission on the ./storage folder
  • generate the Laravel KEY: php artisan key:generate
  • start the Laravel scheduler (it will delete expired bundles of the storage). For example * * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Use your browser to navigate to your domain name (example: files.yourdomain.com) and that's it.

Configuration

In order to configure your application, copy the .env.example file into .env. Then edit the .env file.

Configuration  Description
APP_ENV     change this to production when in production (local otherwise)
APP_DEBUG change this to false when in production (true otherwise)
TIMEZONE change this to your current timezone
LOCALE  change this to "fr" or "en"
STORAGE_PATH  (optional) changes this wherever you want to store the files. When missing, using the storage folder at the root of the application
UPLOAD_MAX_FILES (optional) maximal number of files per bundle
UPLOAD_MAX_FILESIZE  (optional) change this to the value you want (K, M, G, T, ...). Attention : you must configure your PHP settings too (post_max_size, upload_max_filesize and memory_limit). When missing, using PHP lowest configuration
UPLOAD_LIMIT_IPS  (optional) a comma separated list of IPs from which you may upload files. Different formats are supported : Full IP address (192.168.10.2), Wildcard format (192.168.10.*), CIDR Format (192.168.10/24 or 1.2.3.4/255.255.255.0) or Start-end IP (192.168.10.0-192.168.10.10). When missing, filtering is disabled.
APP_NAME the title of the application

Development

If your want to modify the sources, you can use the Laravel Mix features:

  • configure your domain name. For example: files.yourdomain.com
  • clone the repo or download the sources into the webroot folder
  • configure your webserver to point your domain name to the public/ folder
  • run a composer install
  • run a npm install
  • run a npm run watch in order to recompile the assets when changed

Roadmap / Ideas / Improvements

There are many ideas to come. You are welcome to participate.

  • ability to define a bundle name and/or description that will be shown to the recipients
  • make the expiry date editable per bundle
  • limit upload permission by a password (or passwords)
  • disable bundle after X downloads (value to be configurable by the bundle owner)
  • ability to send link to recipients directly from the app
  • add PHP unit testing
  • more testing on heavy files
  • customizable / white labeling (logo, name, terms of service, footer ...)
  • responsiveness (is it really useful?)

Licence

GPLv3

Permissions Conditions Limitations
Commercial use Disclose source Liability
Distribution License and copyright notice Warranty
Modification Same license
Patent use State changes
Private use 

https://choosealicense.com/licenses/gpl-3.0/

Welcome on board

If you are willing to participate or if you just want to talk with me : [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].