I received an official response from Amazon on this. Here is their answer:
var fileTransferUtility = new TransferUtility(); var uploadRequest = new TransferUtilityUploadRequest(); Thread thread = new Thread(() => fileTransferUtility.Upload(uploadRequest)); Thread.Sleep(5000);
Instead of using BeginUpload / EndUpload you need to use the Upload call wrapped in the stream and start the link to this stream.
If the user needs to cancel, call Abort() on the thread, which will cancel the download. Of course, you need to clear partially downloaded files (they are credited to them!).
As I suspected: very simple and intuitive, but not so easy to find :)
source share