我使用以下代码上传图像文件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
请在此处提出可能出现的问题..
答案 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>