There are related problems in db_exec_lob and cr_create_content_file. Several of the file upload problems people have had with Win32 OpenACS occur because file handles aren't fconfigure'd with "-translation binary" before use.
See JCD's comment in cr_create_content_file - TCL's file copy really would be better than ns_cpfp. Peter's changes to use ns_returnfile in db_exec_lob should fix the other problems - I've just been adding the fconfigure where necessary, but the proposed solution increases efficiency too.