Composr Tutorial: Providing downloads
Written by Chris Graham
The download system is a system for the storage, organisation and distribution of files to visitors – specifically designed to be an effective tool on sites with very large numbers of downloads. A file in this system is called a Download.Note that the download system is not intended for placing articles: there is a dedicated news/articles system for this. You may still use it to store articles if you prefer to, in formats such as PDF.
Setting up categories
In the download system, downloads are placed in categories, and categories together make up a tree (hierarchical) structure. When Composr is first installed there is just a single download category: the 'Home' category, which will be the 'parent' to the first new category ('child') you make. When you make a new category, you can choose a 'parent' of any existing category; by this structure, the tree is formed (by choosing a parent, you are essentially saying that your new category exists underneath it in the structure).This tree principle applies to many areas of Composr: we strive to standardise things across our product to make things as consistent (hence, easy) as possible.
Download categories may have 'representative images'. When you are viewing a link to a category from its parent category, the representative image will be included.
Manage download categories from Admin Zone > Content > Downloads.
You can delete a download category from the bottom of its edit form. The root download category cannot be deleted, however.
Adding downloads (and editing/deleting)
Manage downloads from Admin Zone > Content > Downloads.
We recommend that you attach a file, as Composr can then manage it without risk of the URL being broken by something outside of the Composr control.
There is a caveat with this, however, as the web was not designed for uploading large files. Essentially, the web was designed to make fast requests for web pages: attaching a large file extends the request, and widens the window for transfer errors (HTTP uploads have no 'resume' mechanism, and no good way of easily finding it a transfer is actually proceeding other than checking for network usage).
In addition, PHP may not support large files (sometimes dropping POST information as well as the file, which makes Composr give an error message).
Therefore we recommend not to try attaching a file more than around 250MB in size. Larger files should be uploaded manually, and then the URL entered.
Upload vs URL
When you add a download you have a choice as to whether to specify a URL or to attach a file. There are other options actually, explained in more detail in the Advanced provision of downloads tutorial.We recommend that you attach a file, as Composr can then manage it without risk of the URL being broken by something outside of the Composr control.
There is a caveat with this, however, as the web was not designed for uploading large files. Essentially, the web was designed to make fast requests for web pages: attaching a large file extends the request, and widens the window for transfer errors (HTTP uploads have no 'resume' mechanism, and no good way of easily finding it a transfer is actually proceeding other than checking for network usage).
In addition, PHP may not support large files (sometimes dropping POST information as well as the file, which makes Composr give an error message).
Therefore we recommend not to try attaching a file more than around 250MB in size. Larger files should be uploaded manually, and then the URL entered.
Security
Viruses
It is your responsibility to scan files for viruses, as Composr does not include a virus scanner. This is particularly relevant to those submitted for validation by users.Protection from hackers
For an uploaded file, you will see upon edit that the filename of the actual on-disk file can not be determined from the URL. Composr stores the true filename in the database, but makes it so that people cannot circumvent the download system and download files directly. When an uploaded file is downloaded, it does not actually directly indicate for the user's web browser to download the URL, but rather, it is 'piped through' Composr so as to hide where it came from. This allows you to maintain your chosen permission scheme. In addition, Composr provides an anti-leech feature which stops people placing the direct download links on other websites.Images
When you add a download, Composr automatically adds a specially-named gallery for it (if the galleries addon is installed). You will actually see a convenient 'add image' icon directly after adding the download, and you will also find an equivalent link on the download-view screen itself. The download gallery is displayed in-line, within the actual download-view screen. The Composr gallery system is used for adding and storage of the images. If you have no images added for the download yet there is a shortcut on the main download add/edit form for that; otherwise you can choose which of the images should also serve as the thumbnail for the download on the download add/edit form.Accessing downloads
Downloads are accessed from the downloads module (site:downloads page-link, Content > Downloads on the default menus).
This link will take the user to the Home download category, from which they can browse through the categories until they find a download they want.
We understand how important it is for users to be able to navigate fast around a website, so we have also created a 'view the whole download tree' feature that they may use to jump straight to the category of their choosing; this is not linked in by default, but can be placed on menus by browsing for it in the menu editor's entry-point tree. The data for the tree is downloaded in a very compressed format, making it fast to load.
This link will take the user to the Home download category, from which they can browse through the categories until they find a download they want.
We understand how important it is for users to be able to navigate fast around a website, so we have also created a 'view the whole download tree' feature that they may use to jump straight to the category of their choosing; this is not linked in by default, but can be placed on menus by browsing for it in the menu editor's entry-point tree. The data for the tree is downloaded in a very compressed format, making it fast to load.
Editing/Deleting a download
When you edit a download, you get a choice to replace the file.
You can delete a download from the bottom of its edit form.
When deleting a download you get the option to leave the actual file on the server. This is something you will rarely want to do, as it is best to just let Composr manage the files inside your upload directories; however it is useful in the rare case that you added a second download to use the URL of the download about to be deleted.
Composr will never try to delete a file that is not inside an upload directory, and naturally it cannot delete the file at any arbitrary URL or any file for which there aren't sufficient file permissions.
You can delete a download from the bottom of its edit form.
When deleting a download you get the option to leave the actual file on the server. This is something you will rarely want to do, as it is best to just let Composr manage the files inside your upload directories; however it is useful in the rare case that you added a second download to use the URL of the download about to be deleted.
Composr will never try to delete a file that is not inside an upload directory, and naturally it cannot delete the file at any arbitrary URL or any file for which there aren't sufficient file permissions.
Searching inside downloads
User's may use the unified Composr searching system to find downloads that match their interests. i.e. downloads may be searched from the search module, or the search block.In addition, the search module is able to search within the actual downloadable files. The following file types are supported for keyword extraction:
- .txt, .1st
- .rtf
- .xml
- searching text buried within binary formats (e.g. .doc, .ppt)
- searching for other file types within archive files (.zip, .tar, .gz)
Large files
If you're PHP build is 32 bit, files over 2GB are not supported.If you're PHP build is 64 bit, files over 2GB are supported but the file size will not be displayed.
See also
- Comcode and the attachment system
- Featuring content
- Advanced provision of downloads
- Releasing news & running a Blog
- Choosing how to publish
Feedback
Please rate this tutorial:
Have a suggestion? Report an issue on the tracker.