我有一个用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});
答案 0 :(得分:0)
我不确定将大文件上传到S3时的平均问题,但是从您发布的错误消息中看来,您似乎试图在一次关闭中上传一个大文件。我建议您将大文件上传到块中。我找到了一些可以帮助实现它的链接。
希望这个链接可以帮到你!