I've mentioned this before: http://swfupload.org/ It's a flash tool for uploading files, and can interact with PHP scripts. Check out the demos.
There is no efficient way to give a "correct" progress bar with simply using PHP. Your best bet is to create a flash application, or if necessary, a Java application. The reason being is that PHP is a server-side scripting engine. That being said, it cannot output the size of tmp file (being uploaded) in comparison to its full size (thus how you would get a percentage) since it cannot access the remote PC. Flash and Java, however, are client-side programs which can access file information. Regards, Dennis M.