jquery文件上传插件大文件问题

Posted

技术标签:

【中文标题】jquery文件上传插件大文件问题【英文标题】:jquery file upload plugin large file issues 【发布时间】:2015-05-31 16:51:58 【问题描述】:

我正在使用 Asp.Net MVC 5 和标准 jquery plugin。我能够将最大 24MB 的文件上传到 MVC 动作控制器。大于 30MB 的文件根本不会上传。 MVC FileUpload actionmethod 上的断点永远不会被命中。是否有一些配置需要设置?我搜索了一些文档,但找不到任何文档。

这是我的 web.config 中的设置

 <system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />
  </system.web>

我添加了这个,现在我可以上传最多 110MB 的组合文件。

 <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="2147483647" />
      </requestFiltering>
    </security>
  </system.webServer>

1GB 以上的文件仍然没有运气。在开发人员工具中,当我查看文件发布时,网络部分出现 500 - 内存不足错误。如何调整 IIS express 中的内存或者这是本地桌面问题?

【问题讨论】:

查看 web.config &lt;requestLimits maxAllowedContentLength="&lt;length&gt;" /&gt; 如果存在则增加大小 【参考方案1】:

这似乎不是编码问题,而是一次调用可以传输多少 JSON 数据。 如果您只想在 web.config 中将其更新为最大长度,请查看 this 答案

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="2147483647"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

您也可以在代码中使用this。看看这个答案。

protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior) 
 
  return new JsonResult()  
    Data = data, 
    ContentType = contentType, 
    ContentEncoding = contentEncoding, 
    JsonRequestBehavior = behavior, 
    MaxJsonLength = Int32.MaxValue 
  ; 

【讨论】:

谢谢。在 Chrome 开发工具中检查预览时仍然收到“500 内部服务器错误”我看到这个 - >“/”应用程序中的服务器错误。引发了“System.OutOfMemoryException”类型的异常。 这意味着服务器可能没有足够的内存来容纳巨大的文件。我建议您增加超时时间并检查服务器是否有足够的内存。或者,您可以在服务器上打开缓冲流以将数据保存在临时文件中,这样您就不会耗尽内存。此外,http 请求并不用于此类目的。如果可能,您可能需要考虑使用 ftp。 谢谢。我有点认为这可能是内存问题,因为用于运行它的开发机器只有 4GB 内存。我仍然认为 1 GB 是可以管理的。我不需要为此修改任何代码。我使用 和你的配置建议让它在最初小于 30MB 的文件上工作,所以我会将此答案标记为正确。【参考方案2】:

阻止断点被击中的不是您的客户端代码,而是服务器拒绝了包含超过服务器上指定的最大字节数的文件数据的 POST 请求。

您可以通过将以下内容添加到应用程序的 web.config 来指定允许的最大文件大小(以字节为单位):

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="xxx" />
  </system.web>
</configuration>

【讨论】:

这也不起作用。我设置了最高 2GB 的限制 你把xxx改成字节数了吗?? 是的。我把 maxRequestLength="2147483647" 我正在上传到我自己的开发者框,所以不应该这样。文件上传进度条一直到 100%,然后我收到 500 内部服务器错误。用更多细节编辑了我的问题。

以上是关于jquery文件上传插件大文件问题的主要内容,如果未能解决你的问题,请参考以下文章

大文件没有通过我的 js 插件上传

大文件上传组件webupload插件

使用 Jquery File Upload 上传大(ish)文件

jQuery 表单插件 + Ajax 文件上传 + Rails

PHP 大文件上传插件(500M以上)

SWFUpload 文件上传插件常用的配置讲解