Update w/actual answer: I selected the single answer below, because it encouraged looking deeper into actual machine, actual user, etc. The problem appears only in Microsoft Word files, and only for specific users. After watching the user behavior, it appears to happen to those users who leave Word open during the upload. Our hypothesis is that Word is writing SmartTag information to the file while the file is still being uploaded, resulting in a corrupt file. It appears to happen on remote/VPN connections more because the uploads are slower, giving us a higher statistical chance of Word writing to the file. Uploads on the LAN are so fast that the chances of a Word write are lower.
We're seeing a problem where file uploads sometimes arrive on the server corrupt. It never happens on users physically sitting on the LAN, only with users using VPN connections. They are all running the same image: clean IE6, XP. The server is Tomcat 5.0.28 using the Apache Commons File Upload 1.2.1 library. The VPN connection does span North America to India, so the latency could be substantial.
Answers to raised questions:
Is there a way for you to narrow this down a bit more, like is this just from a particular site, a particular user, or users on a particular machine? No, the only common thread is VPN connection, though there are a set of VPN users who have never experienced this problem, while others experience it regularly
Does the corruption seem to happen at a particular window of the day? No, it can happen any time
Are they able to transfer files in a different protocol, and does it have the same corruption issues? When the file upload results in a corrupt version, they always e-mail the file instead. E-mailing the file always works.
Are you able to copy files from your site to theirs and see the same results, intermittent corruption? That could tell you if it's the transfer process itself causing it if the corruption occurs bi-directionally. This is a good idea. I will try it and report back.
Is there a way to set up a server on their side to store data and then run a scripted sync of data between the two servers periodically? Good idea, but not possible for legal and staffing reasons.