2025-02-21 20:47:28 -05:00
2024-06-26 00:47:18 -04:00
2025-02-21 20:38:57 -05:00
2025-02-21 20:40:11 -05:00
2024-06-26 00:47:18 -04:00
2025-02-21 20:41:57 -05:00
2025-02-21 20:47:28 -05:00
2024-06-26 00:47:18 -04:00
2024-06-24 16:02:24 -04:00
2024-06-24 14:33:33 -04:00
2025-02-21 20:13:53 -05:00
2024-06-26 00:47:18 -04:00
2024-06-26 00:47:18 -04:00
2024-06-26 00:47:18 -04:00
2024-06-26 00:47:18 -04:00

Here are list of changes made to original code base:

Functionality & Features

  • Multi-file Upload:
    Allows users to upload multiple files at once, which improves efficiency and user experience.

  • File Editing:
    Built-in editing functionality for text-based files enables quick modifications without leaving the interface.

  • Batch Deleting:
    The ability to select multiple files and delete them in one action streamlines file management.

  • Sorting & Filtering:
    Users can sort files by various attributes (name, date modified, uploaded date, size, uploader), making navigation easier.

  • User Management:
    Incorporates secure authentication (with hashed passwords) and admin-only controls for adding new users.

Security

  • Password Hashing:
    Using PHP's password_hash() and password_verify() ensures that user credentials are securely stored and verified.

  • Session-based Authentication:
    Leveraging PHP sessions to maintain secure user state across the application.

  • Access Control:
    Admins have extra privileges (such as creating new users), which is properly enforced via session checks and restricted endpoints.

  • Safe File Operations:
    File metadata (including uploader info) is stored securely in JSON, helping avoid direct exposure of sensitive details.

User Experience & Interface

  • Responsive Design:
    The layout adapts to different screen sizes, ensuring a good experience on both desktop and mobile devices.

  • Dynamic UI Updates:
    Uses modern JavaScript (Fetch API, asynchronous calls) to update the file list and authentication state without full page reloads.

  • Clear Feedback:
    Users receive immediate alerts and visual feedback for actions like login, file upload, and deletion.

Extensibility & Maintainability

  • Modular Code Structure:
    The project is divided into distinct files (auth.js, upload.js, displayFileList.js, etc.), which makes it easier to manage and extend.

  • Customization Options:
    The codebase is flexible enough to allow the addition of more file types, new features (e.g., versioning, file previews), or integration with other systems.

  • Good Practices Demonstrated:
    The project illustrates the use of best practices in PHP (such as session management and secure password handling) and modern front-end JavaScript, making it a valuable learning resource.

Deployment & Real-world Use

  • Reverse Proxy Compatibility:
    With proper server configuration and security measures, this project can be deployed behind a reverse proxy, offering an extra layer of security.

  • Real-world Scenario:
    A multi-file uploader with editing and user management is useful in many environments—whether for managing firmware, documents, images, or any files—making this a practical solution.

Original readme:

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

screenshot

Description
🗂️ FileRise – lightweight, self-hosted file manager with granular ACLs, shared uploads, WebDAV & SSO. Fully Docker / Unraid compatible.
Readme MIT 80 MiB
Languages
JavaScript 53.4%
PHP 37.1%
CSS 6%
HTML 2.6%
Shell 0.6%
Other 0.3%