This seems like an interesting solution and you explain it very clearly here. But honestly, I've very rarely found it necessary to store entire files in the database. Particularly because BLOB handling is one of those database features that varies widely from DBMS to DBMS and any solution I write I know I'll have to support in at least three systems :-)
Instead I store pointers to the files -- filenames -- in the database and let the filesystem do what it does best. The most flexible type of filename stored in the database is a partial one, so the calling program needs to have a parameter/property for the root directory. Other tools (e.g., rsync) have been developed and optimized to take care of the distribution/replication issue for files.