I'm a bit baffled why you'd consider accessing the database directly - you should be using the file API.
File API handbook section is at http://drupal.org/node/555118
You should use the File API to create managed or unmanaged file entries, and not worry more about how they are stored in the db.
A module that might help you is http://drupal.org/project/filefield_sources. In fact, it might already do everything you need. Anyway, it allows you to add a file from any source.
It *is* complicated trying to allow access to a file that is not in your public or private files section. The idea of having drupal:// didn't get in.
-Randy
Hi everyone,
I'm upgrading my D6 module to D7 and am trying to work out the best way to implement the new File API...
My module allows users to either upload a file from their computer, or enter the relative path of a file already on the server (e.g. /sites/default/themes/...). The relative path to this file is then stored in the DB.
I'm not sure what to store in the database in the D7 version: the file URI (public://my_file.png) or the relative path as per the D6 version (/sites/default/files/my_file.png).
The reasons I'm not sure are as follows:
- Storing the File URI seems to be the obvious choice as that seems to be the default now
- But how would I allow users to enter the path of a file already on the server in, say, their theme folder?
- Storing the relative path is how I used to do it, so is easier
- But then how do I change a relative path to a File URI when required (e.g. by the image_style_url() function)?
Any assistance or advice would be much appreciated!
-- Kind regards, Peter Anderson. http://panda.id.au