【发布时间】:2015-12-18 17:56:27
【问题描述】:
我有一个用 C# 和 MVC4 构建的网站,用户可以在其中上传大文件,然后将这些文件发送到 Amazon S3。
这是间歇性的,但我不断收到以下错误:
“由于系统缺少足够的缓冲区空间或队列已满 54.231.236.12:443,因此无法对套接字执行操作”
我目前使用 InputStream 作为 S3 的 PutObject。有人对为什么 PutObject 在这些较大的文件上会失败有任何建议吗?
下面是我用来将 HttpPostedFileBase 发送到亚马逊的代码:
HttpPostedFileBase hpf = Request.Files[0] as HttpPostedFileBase;
if (hpf.ContentLength > 0)
{
string accessKey = ConfigurationManager.AppSettings["Amazon_Access_Key"];
string secretKey = ConfigurationManager.AppSettings["Amazon_Secret_Key"];
AmazonS3Client client;
var filePath = UserID + "/" + hpf.FileName;
client = new AmazonS3Client(accessKey, secretKey, RegionEndpoint.USWest1);
PutObjectRequest request = new PutObjectRequest();
request.BucketName = "MyBucket";
request.CannedACL = S3CannedACL.PublicRead;
request.Key = filePath;
request.InputStream = hpf.InputStream;
client.PutObject(request);
}
return Json(new {message = "chunk uploaded", name = name});
【问题讨论】:
标签: c# sockets asp.net-mvc-4 amazon-web-services amazon-s3