【问题标题】:Image not able to uploaded to Amazon S3 server图片无法上传到 Amazon S3 服务器
【发布时间】:2014-05-08 00:36:45
【问题描述】:

我正在使用以下代码上传图像文件 Amazon AWS S3 服务器..

using (var msImage = new MemoryStream(arrayImage))
using (var msImageL1 = new MemoryStream())
using (var bmImage = (Bitmap)Image.FromStream(msImage))
using (var bmPicture01 = new Bitmap(924, 693))
using (Graphics gPicture01 = Graphics.FromImage(bmPicture01))
{
    using (IAmazonS3 s3client = new AmazonS3Client(accessKey, secretKey, RegionEndpoint.APSoutheast1))
    {
        PutObjectRequest putObjectRequest = new PutObjectRequest
        {
            BucketName = bucketName,
            Key = "sample/5.jpg",
            InputStream = msImage
        };

        s3client.PutObject(putObjectRequest);

    }

    gPicture01.InterpolationMode = InterpolationMode.HighQualityBicubic;
    gPicture01.DrawImage(bmImage, 0, 0, 924, 693);
    bmPicture01.Save(msImageL1, ImageFormat.Jpeg);

    using (IAmazonS3 s3client = new AmazonS3Client(accessKey, secretKey, RegionEndpoint.APSoutheast1))
    {
        PutObjectRequest putObjectRequest = new PutObjectRequest
        {
            BucketName = bucketName,
            Key = "sample/6.jpg",
            InputStream = msImageL1
        };

        s3client.PutObject(putObjectRequest);

    }
}

上传“5.jpg”的第一个代码工作正常,上传成功。但是其他代码现在正在工作并给出异常,

Message=The request was aborted: The request was canceled.
Message=Cannot close stream until all bytes are written.

我正在使用适用于 .NET 版本 2.0.2.3 的 Amazon Web Services SDK

请提出这里可能出了什么问题..

【问题讨论】:

    标签: asp.net amazon-web-services amazon-s3 image-uploading memorystream


    【解决方案1】:

    由于没有任何其他答案,并且我的第一个回复因为“没有真正回答问题”而被删除,我将尝试重新措辞。

    你说:

    请提出这里可能出了什么问题..

    我的建议是你的代码没有问题。相反,它可能是 2.0.1 及更高版本的错误。请参阅https://forums.aws.amazon.com/thread.jspa?threadID=139612&tstart=0(需要登录)。我已经尝试了 2.0.2.3 版本,但错误仍然存​​在。

    您可以使用以前的版本进行测试。

    【讨论】:

    • 几个小时后,我恨自己,想知道亚马逊为什么如此鄙视我,我可以确认这就是答案。对于将流作为参数传递的 PutObject 调用,新的 SDK 已损坏。我尝试了所有方法来修复,但恢复到旧版本的 SDK 是唯一的解决方案。
    • 附录:同一个线程现在说它已在 2.0.4 中修复。如果您仍然坚持使用 2.0.3,还请注意 Pavel 的解决方法。
    【解决方案2】:

    这里的问题是bmPicture01.Save(msImageL1, ImageFormat.Jpeg); 将位图保存为字符串,但不会将流的位置重置为 0。您需要在将流传递给 PutObject 之前执行此操作。

    【讨论】:

      猜你喜欢
      • 2019-05-15
      • 2017-05-04
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2015-07-14
      • 2013-01-20
      相关资源
      最近更新 更多