There are many reasons for storing BLOB's (Binary Large OBjects) in a database rather than just saving the location of the file as a string.
One of the main reasons is so that the objects do not need to be maintained outside of the database; i.e. you don't need to write code to handle, track, and maintain the actual object files (not all are images or gif's) seperately from the database (copy file here, move file there, etc). Keeping the files in the database will keep you from getting your files and the database information out of sync (i.e. database points to the file somewhere where it no longer resides). Also, the objects get backed up with the database; you don't need to include extra directories and object definitions in the back up.
In some environments the server may not always have the authority to write and manipulate files in the system's directories. In this case saving the objects in the databases keeps you from having to have write/delete permissions to the server's directory tree.
These are just a couple of reasons, there are others.
-- Rich Rijnders
-- Irvine, CA US