C# S3多部分上传:如何取消一个?

C# S3多部分上传:如何取消一个?,c#,.net,amazon-web-services,amazon-s3,C#,.net,Amazon Web Services,Amazon S3,我需要取消使用启动的正在进行的下载 fileTransferUtility = new TransferUtility(/*...*/); var uploadRequest = new TransferUtilityUploadRequest() /* config parameters... */ fileTransferUtility.BeginUpload(uploadRequest, new AsyncCallback(uploadComplete), file); 我已经搜索了SO

我需要取消使用启动的正在进行的下载

fileTransferUtility = new TransferUtility(/*...*/);
var uploadRequest = new TransferUtilityUploadRequest() /* config parameters... */
fileTransferUtility.BeginUpload(uploadRequest, new AsyncCallback(uploadComplete), file);
我已经搜索了SO和文档,但我找不到方法

理由:用户可以选择要上传的文件,也可以选择非常大的文件,比如1GB。我需要能够取消这个

在最坏的情况下,我可以尝试完全杀死线程,或者以一种不干净的方式关闭上传,但是怎么办

谢谢

试试以下方法:

s3Client.AbortMultipartUpload(new AbortMultipartUploadRequest()
  .WithBucketName(bucketName)
  .WithKey(key)
  .WithUploadId(Response.UploadId));
}
请参见

我收到了一封关于此的邮件。答复如下:

var fileTransferUtility = new TransferUtility(/* */);
var uploadRequest = new TransferUtilityUploadRequest();

Thread thread = new Thread(() => fileTransferUtility.Upload(uploadRequest));
Thread.Sleep(5000); // If not done in 5 seconds abort
if(thread.IsAlive)
    thread.Abort();
与使用
BeginUpload
/
EndUpload
调用不同,您需要使用一个线程中包装的
Upload
调用,并保存对该线程的引用

如果用户需要取消,请在线程上调用
Abort()
,这将取消上载。当然,你需要清理部分上传的文件(他们会为此付费!)


正如我所怀疑的:非常简单和直观,但不容易找到:)

将上传包装到线程中是可行的,但是,至少对我来说,如果文件太大,中止线程需要相当长的时间。有人也看到了吗?

试试这个ans-w解决你的问题吗?谢谢,但不幸的是,这不会停止当前的上传线程。此外,TransferUtility仅在其超过一定大小时才会执行多部分上载,否则将执行标准上载,这不受此调用的影响。我需要添加对
thread.Start()
的调用,然后才能执行此操作。