Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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# Amazon S3动画gif-仅上载第一帧_C#_Amazon Web Services_Amazon S3_Animated Gif - Fatal编程技术网

C# Amazon S3动画gif-仅上载第一帧

C# Amazon S3动画gif-仅上载第一帧,c#,amazon-web-services,amazon-s3,animated-gif,C#,Amazon Web Services,Amazon S3,Animated Gif,(我在Stackoverflow上研究了所有类似的问题,但没有一个能帮助我解决问题) 我可以像这样将gif上传到Amazon S3,其中request.FileBytes是一个字节数组: public bool UploadFile(CdnFile request) { var transfer = new TransferUtility(CdnConfig.AccessKey, CdnConfig.SecretKey, ep); var uploadRequest = new Tran

(我在Stackoverflow上研究了所有类似的问题,但没有一个能帮助我解决问题)

我可以像这样将gif上传到Amazon S3,其中request.FileBytes是一个字节数组:

public bool UploadFile(CdnFile request)
{
  var transfer = new TransferUtility(CdnConfig.AccessKey, CdnConfig.SecretKey, ep);
  var uploadRequest = new TransferUtilityUploadRequest();
  uploadRequest.InputStream = new MemoryStream(request.FileBytes);

  var result = transfer.BeginUpload(s3Req2, cb, null);
  transfer.EndUpload(result);
}
这对于.jpg来说很好,但是对于动画.gif来说,只上传gif的第一帧(如果我直接通过S3上传相同的gif,则效果很好)。因此,这必须与我如何流式传输或转换文件有关,但是我不确定如何找出问题发生的地方

我创建request.FileBytes如下,其中“imageData”是图像的原始数据(Chrome在显示我试图上传到S3的动画gif预览时使用此图像数据,并且动画效果良好):


这段代码对我来说很好,也许您可以根据您的用例对其进行调整。我从本地文件上传GIF,上传后显示/工作正常:

        using (var client = new AmazonS3Client("AKIAI5ZL44fake4442COJA", "4sYnPuA1zMkhghghghghTpX4F5/FUXGDiAKm", RegionEndpoint.USEast1))
        {
            var request = new PutObjectRequest
            {
                BucketName = "bucketname",
                ContentType = "image/gif",
                Key = "test.gif",
                FilePath = @"c:\dev\006.gif"
            };
            var response = client.PutObject(request);
        }

问题出在我的SaveAsGif方法上,因此问题与编解码器有关。我可以创建我的request.fileBytes,而不必像这样使用编解码器,它可以工作:

var imageStream = new MemoryStream(data);
fileBytes = imageStream.ToArray();
var imageStream = new MemoryStream(data);
fileBytes = imageStream.ToArray();