图像无法上传到Amazon S3服务器

时间:2013-11-29 12:21:04

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

我使用以下代码上传图像文件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

请在此处提出可能出现的问题..

2 个答案:

答案 0 :(得分:1)

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

你说:

  

请在此处提出可能出现的问题..

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

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

答案 1 :(得分:1)

这里的问题是bmPicture01.Save(msImageL1, ImageFormat.Jpeg);将位图保存到字符串但不会将流的位置重置为0.在将流传递给PutObject之前,您需要这样做。< / p>