C# c语言中的多部分上载错误#
我正在尝试使用AWS上载文件,当我将零件大小设置为5MB时,代码工作正常,但当我尝试将零件大小更改为1MB时,会出现异常: 代码是C# c语言中的多部分上载错误#,c#,amazon-web-services,C#,Amazon Web Services,我正在尝试使用AWS上载文件,当我将零件大小设置为5MB时,代码工作正常,但当我尝试将零件大小更改为1MB时,会出现异常: 代码是 string strusername = "user1"; strlocalpath = "C:\\file1.zip"; string BUCKET_NAME = "bucket1"; string filename = "file1.zip"
string strusername = "user1";
strlocalpath = "C:\\file1.zip";
string BUCKET_NAME = "bucket1";
string filename = "file1.zip"
string keypath = strusername + "/" + filename;
string keyName = "123";
string filePath = strlocalpath;
// List to store upload part responses.
List<UploadPartResponse> uploadResponses = new List<UploadPartResponse>();
// 1. Initialize.
InitiateMultipartUploadRequest initRequest =
new InitiateMultipartUploadRequest()
.WithBucketName(BUCKET_NAME)
.WithKey(keyName);
InitiateMultipartUploadResponse initResponse =
s3Client.InitiateMultipartUpload(initRequest);
// 2. Upload Parts.
long contentLength = new FileInfo(filePath).Length;
//Set Part size
long partSize = 1*1024*1024; // 5 MB
try
{
long filePosition = 0;
for (int i = 1; filePosition < contentLength; i++)
{
if (filePosition + partSize > contentLength)
{
partSize = contentLength - filePosition;
}
// Create request to upload a part.
UploadPartRequest uploadRequest = new UploadPartRequest()
.WithBucketName(BUCKET_NAME)
.WithKey(keyName)
.WithUploadId(initResponse.UploadId)
.WithPartNumber(i)
.WithPartSize(partSize)
.WithFilePosition(filePosition)
.WithFilePath(filePath)
.WithTimeout(60*60*60);
// Upload part and add response to our list.
uploadResponses.Add(s3Client.UploadPart(uploadRequest));
filePosition += partSize;
Console.WriteLine("\nTotal uploaded size = " + filePosition.ToString());
}
// Step 3: complete.
CompleteMultipartUploadRequest compRequest =
new CompleteMultipartUploadRequest()
.WithBucketName(BUCKET_NAME)
.WithKey(keyName)
.WithUploadId(initResponse.UploadId)
.WithPartETags(uploadResponses);
CompleteMultipartUploadResponse completeUploadResponse =
s3Client.CompleteMultipartUpload(compRequest);
}
catch (Exception exception)
{
Console.WriteLine("Exception occurred: {0}", exception.Message);
s3Client.AbortMultipartUpload(new AbortMultipartUploadRequest()
.WithBucketName(BUCKET_NAME)
.WithKey(keyName)
.WithUploadId(initResponse.UploadId));
}
我想上传1 MB或2MB的文件,可以吗
谢谢看起来你的尺码弄错了 S3文档: 除最后一部分外,每个部分的大小必须至少为5 MB。那里 多部分上传的最后一部分没有大小限制 因此,不能指定要执行小于5MB的部件。当执行多部分时,它将自动允许最后一部分(假设最后一部分不是第一个/唯一的部分)小于5MB
冰川记录: 国家: 启动多部分上载时,请在中指定零件尺寸 字节数。部件大小必须是兆字节(1024KB)的倍数 通过2-1的幂次,例如1048576(1MB)、2097152(2MB)、4194304 (4MB)、8388608(8MB)等。允许的最小零件尺寸为 1 MB,最大为4 GB 您的代码具有上面的
long partSize=1*1024*1024
即1048576
即1 MB
,而不是您的注释所述的5MB
以及供将来参考或同一问题的注释,来自同一链接:
使用此上载ID上载的每个部分(最后一个除外)必须
有同样的尺寸。最后一个可以是相同大小或更小。对于
例如,假设您要上载一个16.2MB的文件。如果你发起
部分大小为4MB的多部分上载,您将上载四个
每个部分4 MB,一部分0.2 MB
看起来你的尺码弄错了 S3文档: 除最后一部分外,每个部分的大小必须至少为5 MB。那里 多部分上传的最后一部分没有大小限制 因此,不能指定要执行小于5MB的部件。当执行多部分时,它将自动允许最后一部分(假设最后一部分不是第一个/唯一的部分)小于5MB
冰川记录: 国家: 启动多部分上载时,请在中指定零件尺寸 字节数。部件大小必须是兆字节(1024KB)的倍数 通过2-1的幂次,例如1048576(1MB)、2097152(2MB)、4194304 (4MB)、8388608(8MB)等。允许的最小零件尺寸为 1 MB,最大为4 GB 您的代码具有上面的
long partSize=1*1024*1024
即1048576
即1 MB
,而不是您的注释所述的5MB
以及供将来参考或同一问题的注释,来自同一链接:
使用此上载ID上载的每个部分(最后一个除外)必须
有同样的尺寸。最后一个可以是相同大小或更小。对于
例如,假设您要上载一个16.2MB的文件。如果你发起
部分大小为4MB的多部分上载,您将上载四个
每个部分4 MB,一部分0.2 MB
S3上传的最小部件大小为5MB 显然,最后一部分通常会更小,这很好 “最后一部分”可以更小这一事实的一个副作用是,例如,如果您有一个500 KB的文件,并且您以多部分上传的方式发送它,“第一部分”也是“最后一部分”,这仍然有效,因为它满足“最后一部分”可以小于5MB的规则,但您仍然必须明确使用不小于5MB的部件大小
我在测试默认为64MB的多部分上传时发现了这一点。它在较小的文件上仍然可以正常工作,这些文件作为一个小于5MB的“部分”进行多部分上载。S3上载的最小部分大小为5MB 显然,最后一部分通常会更小,这很好 “最后一部分”可以更小这一事实的一个副作用是,例如,如果您有一个500 KB的文件,并且您以多部分上传的方式发送它,“第一部分”也是“最后一部分”,这仍然有效,因为它满足“最后一部分”可以小于5MB的规则,但您仍然必须明确使用不小于5MB的部件大小
我在测试默认为64MB的多部分上传时发现了这一点。它仍然适用于较小的文件,这些文件可以作为小于5MB的单个“部分”进行多部分上载。有一个简单的规则:如果文件小于5MB,则将其上载到一个部分。有一个简单的规则:如果文件小于5MB,则将其上载到一个部分。实际上,这是对冰川文档的引用,而不是S3。@Michael sqlbot升级到将S3的答案包含在文档中。是的,它对5MB以外的任何东西都不起作用,我尝试将大小设置为1MB和2MB。但仍然没有luck@kunal是的,文档中明确指出不能将大小设置为5MB以下。说得好,实际上,这是对冰川文档的引用,而不是S3。@Michael sqlbot升级到将S3的答案包含在文档中。是的,它对5MB以外的任何东西都不起作用,我尝试将大小设置为1MB和2MB。但仍然没有luck@kunal是的,文档中明确说明不能将大小设置为5MB以下,kudosso基本上不适用于小于5MB的零件尺寸,也不适用于小于5MB的零件尺寸
<Error>
<Code>EntityTooSmall</Code>
<Message>Your proposed upload is smaller than the minimum allowed size</Message>
<ETag>d9c00192bcf6bf7412814a8fe0422b0c</ETag>
<MinSizeAllowed>5242880</MinSizeAllowed>
<ProposedSize>1048576</ProposedSize>
<RequestId>PBG04E031C012F34</RequestId>
<HostId>VEjvpkjuk89yS4xW6Bl/+NPpb3yxvbbe7ijjPmTrlXc7hnjj89kjkm</HostId>
<PartNumber>1</PartNumber></Error>