Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AmazonS3低级API上传大文件_C#_Amazon S3 - Fatal编程技术网

C# AmazonS3低级API上传大文件

C# AmazonS3低级API上传大文件,c#,amazon-s3,C#,Amazon S3,我使用AmazonS3低级API上传大型视频文件,我如下 当我上传文件时,它会给我一个异常 The XML you provided was not well-formed or did not validate against our published schema 我已经检查了内部异常和它的说法 The remote server returned an error: (400) Bad Request. 在这条线上 CompleteMultipartUploadResponse c

我使用AmazonS3低级API上传大型视频文件,我如下

当我上传文件时,它会给我一个异常

The XML you provided was not well-formed or did not validate against our published schema
我已经检查了内部异常和它的说法

The remote server returned an error: (400) Bad Request.
在这条线上

 CompleteMultipartUploadResponse completeUploadResponse =
                    s3Client.CompleteMultipartUpload(completeRequest);
这就是我如何让我的客户

 IAmazonS3 s3Client = new AmazonS3Client(accesskey, secretKey, Amazon.RegionEndpoint.USEast1);
我也尝试过改变bucketname,比如bucketname/filename.mp4,但它给出了一个例外

The specified upload id is not valid
我还尝试了一些其他文件(doc和pdf),它也给出了XML异常


有没有其他上传大视频文件(大约200-500MB)的好方法?

我过去常常将文件发送到S3(大约100-300MB)。我的代码如下所示:

AmazonS3Client s3client = new AmazonS3Client(accessKey, secretKey);
s3Client.PutObject(new PutObjectRequest {BucketName = destinationBucketName, FilePath = myFilePath, Key = Path.GetFileName(myFilePath)});

基本上就是这样。我有重试策略和异常处理,但这是核心。因此,没有任何多部分上传的简单PutObject函数适用于此类文件大小。

在使用文档中的示例代码进行多部分上传时,我发现了类似的问题。我发现ETag列表对于CompleteMultipartUpload部分是必需的,它不在文档示例中


此链接对多部分上传过程有更好的解释:

我可以用它发送大文件吗?不仅仅是单个文件存档是的,我看不出存档和其他文件类型之间有什么区别。与您的多部分上传相比,唯一的区别可能是,如果在上传过程中发生了什么事情(连接丢失),您必须从头开始。但这是一种罕见的情况,对我们来说完全没有问题(重试策略处理了这个问题)。