On Tue, Aug 23, 2005 at 10:07:06AM -0700, Haines, Charles A. wrote:
> To be honest, storing files in a database is a big debate. I wouldn't
> recommend storing the files in the database as it causes the database to
> become huge very quick. Rather another solution would be to store the files
> in a directory structure and store a file path in the database. This method
> keeps the database small, while maintaining the file structure.
This is fine if the database and the filesystem are on the same machine,
or accessible from the same machine. Putting files in the database
harmonizes the access rules for getting at the data: you only need to
worry about the security settings of your mysql installation instead
of both your mysql and NFS/Samba/permissions filesystem setup.
Of course, it is a tradeoff, but sometimes it is valid to store files in
the database, especially if they are small.
As for how to do it, look at the cgi_image.cpp example for how to
retrieve it. For writing, ZeeGeek was correct originally: load the data
into memory and then put it into an SQL statement to write it to the
database. See the load_file.cpp example.
Alternately, if your mysql database is on the same machine as the file
you wish to load, and if the file is readable by the uid that mysql
is running as, then you can use the LOAD_FILE() sql function.