My experience shows that *any* binary file stored in OpenACS (3.2.5, 4.x) when running on Windows gets totally messed up and is never properly returned. I've tried to find out why, to no avail: it does get properly stored in database, but somewhere between a SELECT and an ns_return things go haywire...