2012-08-22 248 views
0

如果我尝试上传大文件到Amazon,我收到以下错误:大文件上传到Amazon S3

"Cannot close stream until all bytes are written"

下面是代码:

amazonClient = AWSClientFactory.CreateAmazonS3Client(_accessKey, _secretKey); 

fileTransferUtility = new TransferUtility(amazonClient); 

uploadRequest = new TransferUtilityUploadRequest() 
        .WithTimeout((60 * 60 * 1000) * 2) 
        .WithBucketName(containerName) 
        .WithKey(fileName) 
        .WithInputStream(dataStream) as TransferUtilityUploadRequest; 

fileTransferUtility.Upload(uploadRequest); 

什么是解决方案这个?

+0

文件有多大? – Christopher

+0

该文件大约为500 MB。 – user1400915

+0

你有错误代码吗?你是否尝试追溯源代码?理想情况下,您应该看到SDK将数据流分成块并异步执行上载。 您是否看到使用PutObject请求的相同结果? – Keshi

回答

0

增加连接超时后再次尝试。

+0

其实异常发生在两分钟内。所以我不认为这是连接超时的问题 – user1400915

0

您确定错误来自AWS吗?您的代码的其他部分可能会试图关闭输入流。

同样对于大的上传,尝试并行上传到S3

+0

是的,我确定它来自AWS,因为相同的代码甚至用于其他存储如sql。而对于并行上传,我使用的是TransferUtility方法,它仍然会导致异常。这是一个限制还是有其他方式可以上传大文件? – user1400915