上载到S3 -由于系统缺乏足够的缓冲空间,无法执行套接字上的操作
本文关键字:空间 缓冲 操作 套接字 执行 S3 于系统 系统 上载 | 更新日期: 2023-09-27 18:13:53
我有一个用c#和MVC4构建的网站,用户可以上传大文件,然后发送到Amazon S3。
它是间歇性的,但我一直得到以下错误:
"无法执行对套接字的操作,因为系统没有足够的缓冲区空间或队列已满54.231.236.12:443"
我目前使用一个InputStream作为S3的PutObject。谁有什么建议,为什么PutObject会在这些大文件上失败?
下面是我用来发送httppostdfilebase到Amazon的代码:
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});
我不确定上传大文件到S3时的平均问题,但从您发布的错误消息来看,您似乎试图一次性上传一个大文件。我建议你把你的大文件上传成块。我找到了一些可以帮助实现这一目标的链接。
- 流
- 多部分上传
- 多部件概念
- 多组分API
- S3丢弃论坛
希望这个链接可以帮助你!