Sorted it:
The files are saved outside the htdocs directory, but then my PHP script sets the headers content-type and content-disposition using the header() function and then echos the fread() contents of the file.
And it works!! I think I can't have set up my MySQL table right, because the BLOB was corrupting the data, but this method is much easier because I can look through files in FTP and download them if I want.
Isaac