Skip to content

sensboston/uploader

Repository files navigation

File Uploader

A simple file uploader web app that allows authenticated users to upload, list, and delete files. The application uses PHP, running on Apache2, Ubuntu (but definitely should work everywhere).

Prerequisites

  • Apache2, configured, up and running
  • PHP 8.1 or higher
  • Required PHP extensions: php-json, php-curl

Hint:

sudo apt update
sudo apt install apache2
sudo apt install php libapache2-mod-php

Installation

Clone

git clone https://github.com/sensboston/uploader.git
cd uploader

or download this repository

wget https://github.com/sensboston/uploader/archive/refs/heads/master.zip
unzip master.zip -d uploader
mv uploader/uploader-master/* uploader/
rm -r uploader/uploader-master
rm master.zip

Configure PHP

Note: adjust PHP version in paths

Ensure the following PHP settings are in your /etc/php/8.1/apache2/php.ini:

log_errors = On
error_log = /var/log/php_errors.log

Also check for max upload file/post size limits in /etc/php/8.1/apache2/php.ini (adjust to your needs, like 10G):

upload_max_filesize = 10M
post_max_size = 10M

Create the upload directory and set the necessary permissions:

sudo mkdir -p /var/www/html/upload
sudo chown -R www-data:www-data /var/www/html/upload
sudo chmod -R 755 /var/www/html/upload

Do not forget to add proper permissions to www-data (used by apache & php)

sudo chown -R www-data:www-data /var/www/html/upload
sudo chmod -R 775 /var/www/html/upload

Create application directory at webroot (or configure app/site):

(note: with my Apache configuration, I just need to create a subdirectory)

sudo mkdir -p /var/www/html/uploader

Edit file config.php and adjust variables

(website name, time zone etc.)

sudo nano /home/ubuntu/uploader/config.php

Edit file users.txt:

This file lists pseudo-users for upload access authentication, in the format username:password. These pseudo-users have nothing to do with Linux users and only serve as an additional layer of protection! Please do not use your real login credentials for this file! Also, be sure to check if you copied the .htaccess file with content (that denies access to users.txt file)

<Files "users.txt">
  Order Allow,Deny
  Deny from all
</Files>

Copy all app files (html, php & js) to the app folder:

sudo cp /home/ubuntu/uploader/*.* /var/www/html/uploader/

Restart Apache to apply changes:

sudo systemctl restart apache2

Usage

Open your web browser and navigate to https://yourserveraddress/uploader

Enter username and password, stored in user.txt to authenticate.

Choose a file to upload and click the "Upload" button.

The uploaded files will be listed on the page, and you can delete them using the "Delete" button.

screenshot

Issues / TODO

  • Add JS check for upload file size, before starting actual upload.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published