Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

File Sharing

A website to help users share large files. The files must not be stored in the public directory on the server. All details about the file upload must be stored in a database.

Stage 1

The core functionality consists of three screens:

  1. The home screen is a list of the files the logged-in user is sharing. This should include:
    1. The name of the upload (not the filename)
    2. The type of file (based on the mimetype calculated by the server)
  2. Clicking on an item in this page should take you to a details page whch displays:
    1. The name of the upload
    2. A detailed, formatted, multi-line description of the uploaded file
    3. The filetype (automatically generated by the system)
    4. The file size in MB (automatically generated by the system)
    5. A link to download the file (the link should reference the file by a hash so the filename should not appear in the URL)
    6. A link to delete the file
  3. There should also be a button on the home page to allow the user to upload files to the server. They should provide the following information:
    1. The file (obviously)
    2. The name they want to give to the upload
    3. The detailed, formatted, multi-line description

Stage 2

The intermediate tasks require you to make changes to the functionality:

  1. The site should no longer display link to uploaded file, instead users will only be able to share files via email:
    1. When a file is uploaded the user should be prompted to enter the email address of the person they want to send the file to
    2. The system will then send an html-formatted email to this user containing a link to the file
    3. Once the file has been downloaded it should be deleted from the server
    4. If the link is not activated within a specified time period the file should be deleted
  2. Each user should have a maximum storage limit:
    1. The amount remaining should be displayed on the home page
    2. If the user tries to upload a file that will cause this storage limit to be exceeded the file upload will be rejected with a message explaining why
    3. The list of uploaded files should be displayed with the most recent at the top and each should display the filetype and the file size

Stage 3

  1. Only registered users can upload or download files.
  2. The system should track the bandwidth consumed by each user based on the size of files and how many times they are downloaded.
  3. Rather than deleting the file once it is downloaded the user can choose to keep the file on the site for up to 5 days (must choose between 1 and 5 days).
  4. All files in the list should have an appropriate icon reflecting what type of file they are and include information such as the file size and the date and time the file was uploaded as well as how long before it will be deleted.