Last updated 19 May 2012. Created on 24 February 2011.
Edited by richardhayward, kbk. Log in to edit this page.

Goal of this documentation

Illustrate the setup and use of the Private Download module in combination with the CCK FileField module.

Setup

Your Drupal 6 site has a Public file system but you have files which require access rules. This is the Public/Private File system conundrum. The following tutorial demonstrates how to solve this problem using the Private Download module.

Assumptions

- A Drupal 6 site setup with a Public file system pointing to "sites/default/files".
- CCK and CCK FileField modules are installed and enabled.

Pre-installation environment

- There shouldn't be a private folder in sites/default/files/
$ ls -al sites/default/files
- If your Drupal code is found in www.example.com/drupal then you're in a sub-directory. If this is the case, set the base_url in settings.php to represent this.

Install and enable Private Download

- Visit the Private Download Module project page.
- See additional details here.

Check Private Download settings

(admin/settings/private_download)

- If you're in a sub-directory check the RewriteBase rule and prepend your directory name to it if it isn't there already:
RewriteBase /[optional-subdirectory]/system/files/private
- No other changes should be necessary. Save configuration.

Check the "private" directory

- Optional

$ ls -al sites/default/files/private
- The directory should contain an .htaccess file

Set up access permissions

(admin/user/permissions)

- Specify which Roles can access private files by allowing that role to "access private download directory."
- Of course, you can create your own roles (admin/user/roles).
- Save permissions

Configure CCK FileField

- Add a CCK FileField to a content type, call them myFile and myContentType, respectively.

- When configuring myFile go to Path settings > File path and specify the private directory. Any files uploaded through this field will end up in the "private" directory.

Confirm Private Download is functioning as expected

- Create a myContentType and upload a file to myFile, we will use test_download.txt as an example. Save.
- Left click on test_download.txt, it should download (or open in browser).
- Right click on test_download.txt > Copy Link Location
- Logout of your website
- Clear your browser's cache and download history
- Open a new browser tab and try either of these URL's (both should produce an "Access denied" error:

www.example.com/system/files/private/test_download.txt
www.example.com/sites/default/files/private/test_download.txt

Note: The second URL should be re-written to the first in the browser.

Looking for support? Visit the Drupal.org forums, or join #drupal-support in IRC.