You have chosen to sponsor your bid up to a maximum amount of .
Web-based file upload/download utility using PHP and/or Perl to do the following:
Store files in directories that are within a root files directory THAT IS BEHIND THE PUBLIC HTTP DIRECTORY (thus not accessible via HTTP).
Store user data and directory data in a MySQL database. USERS TABLE includes: unique ID, real name, user name, pwd, email address, access level (admin, user). DIRECTORIES TABLE includes: unique ID, dir name, public/private. USERS-DIRECTORIES join table includes: user ID, directory ID, privileges (read-write, read only).
ADMIN HOME page to:
-- add users (user's can't create themselves).
-- add directories (when a new directory is created, an actual directory is also created in the root files directory).
-- select and edit existing users (change real name and email, change pwd, change access level).
-- select and edit existing directories (rename, change public/private designation, add/remove users access to the directory, assign privileges to each user of the directory).
USER HOME page to:
-- log in.
-- view and select directories user has access to (select opens USER DIRECTORY page). Should list all directories that are set as "public" (from directories table) plus all directories that user has been granted access to (from join table). If user is an Admin, then lists all.
USER DIRECTORY page to:
-- view files in the directory. NOTE that the list of files displayed for a directory needs to be generated based on the actual contents of the directory, not based on a list of files stored elsewhere like in a SQL table (If I add a file to the directory via FTP, that file needs to be listed for the user even though it was never added using the upload/download program).
-- download files one at a time. NOTE that the directory is in a root files directory behind the public HTTP directory, so downloading files can't be accomplished by just including to a URL link for the file.
-- upload up to three files to the directory IF the user has read-write access to the directory (from join table). When uploading a file of the same name as an existing file, warning then overwrite.
- Handle file sizes up to 100MB.
- Global array of file types to allow (can be based on file extension, no need to read headers).
- Global setting to specify location of root files directory.
- Needs to be PHP/Perl. Needs to be very well commented.
- GUI is not important.