Rus*_*960 2 c# amazon-s3 amazon-web-services
我使用了来自亚马逊的示例代码,它似乎可以正常运行,但是失败并显示以下错误:
您提供的XML格式不正确或未针对我们发布的架构进行验证
我认为,尽管在文档(http://docs.aws.amazon.com/AmazonS3/latest/dev/LLuploadFileDotNet.html)中已注释掉,但仍需要ETags 。我一直在努力建设这个。
代码://列表以存储上载部分的响应。列表uploadResponses = new List();
// 1. Initialize.
InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
{
BucketName = bucketName,
Key = keyName
};
InitiateMultipartUploadResponse initResponse = s3Client.InitiateMultipartUpload(initiateRequest);
// 2. Upload Parts.
long contentLength = new FileInfo(fileName).Length;
long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
try
{
long filePosition = 0;
for (int i = 1; filePosition < contentLength; i++)
{
// Create request to upload a part.
UploadPartRequest uploadRequest = new UploadPartRequest
{
BucketName = bucketName,
Key = keyName,
UploadId = initResponse.UploadId,
PartNumber = i,
PartSize = partSize,
FilePosition = filePosition,
FilePath = fileName
};
// Upload part and add response to our list.
uploadResponses.Add(s3Client.UploadPart(uploadRequest));
filePosition += partSize;
}
// Step 3: complete.
CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
{
BucketName = bucketName,
Key = keyName,
UploadId = initResponse.UploadId
};
CompleteMultipartUploadResponse completeUploadResponse =
s3Client.CompleteMultipartUpload(completeRequest);
return "Complete";
Run Code Online (Sandbox Code Playgroud)
发现了一个问题,尽管示例代码未使用PartETag,但这是必需的。我在UploadPartResponse的定义下添加了以下内容:
List<PartETag> partETags = new List<PartETag>();
Run Code Online (Sandbox Code Playgroud)
然后在uploadResponses.Add部分代码之后添加以下内容:
PartETag petag = new PartETag(s3Client.UploadPart(uploadRequest).PartNumber, s3Client.UploadPart(uploadRequest).ETag);
partETags.Add(petag);
Run Code Online (Sandbox Code Playgroud)
最后将CompleteMultipartUploadRequest修改为以下代码:
// Step 3: complete.
CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
{
BucketName = bucketName,
Key = fileTest,
UploadId = initResponse.UploadId,
PartETags = partETags
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1432 次 |
| 最近记录: |