Can you send me the code you have for your UploadStreamProvider? chris@slickupload.com.
What are you trying to do? Are you trying to upload to the filesystem or something else? If you're trying to upload to a file, you may want to derive from FileUploadStreamProvider and override GetServerFileName to define where to put the file. That way, you don't have to reimplement the file streaming functionality.
The file's contentlength isn't known until after the upload is complete. This is because the file length isn't passed by the browser -- the length of the entire request is passed, but there is encoding, header, and other form item data that make the contentlength passed slightly more than the actual file size.
file.ServerLocation is a value set by the UploadStreamProvider to let code in the UploadComplete event know where the file was stored. The UploadStreamProvider is responsible for setting file.ServerLocation, so if your UploadStreamProvider doesn't set it, it will be empty.