【问题标题】:Upload to S3 - An operation on a socket could not be performed because the system lacked sufficient buffer space上传到 S3 - 无法对套接字执行操作,因为系统缺少足够的缓冲区空间
【发布时间】: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


    【解决方案1】:

    我不确定将大文件上传到 S3 时的平均问题是什么,但从您发布的错误消息来看,您似乎试图一次性上传一个大文件。我建议您应该将大文件上传到块中。我发现了一些可以帮助实现它的链接。

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

    【讨论】:

      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      相关资源
      最近更新 更多