上载到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 -由于系统缺乏足够的缓冲空间,无法执行套接字上的操作

我不确定上传大文件到S3时的平均问题,但从您发布的错误消息来看,您似乎试图一次性上传一个大文件。我建议你把你的大文件上传成块。我找到了一些可以帮助实现这一目标的链接。

  • 多部分上传
  • 多部件概念
  • 多组分API
  • S3丢弃论坛

希望这个链接可以帮助你!