【问题标题】:Maximum upload file size exceeded is ignored超过最大上传文件大小被忽略
【发布时间】:2011-10-26 23:39:35
【问题描述】:

我正在尝试使用技术 describe on this blog 将文档上传到我的服务器

一切顺利,我可以上传文件了。唯一的障碍是当我尝试上传超过我的 web.config 中定义的上传限制的文件时......

<location path="Documents/Documents/Add">
   <system.web>
      <httpRuntime maxRequestLength="25600"/>
   </system.web>   
</location>

问题是我没有得到服务器的响应。其实在Visual Studio中调试的时候,连action都没有命中!

对提琴手的进一步调查表明我得到了一个......

504: ReadResponse() failed: The server did not return a response for this request.  

....但我只有在 fiddler 运行时才在 Chrome 中得到这个。如果 fiddler 没有运行 chrome,则只会看到没有状态代码的“失败”,并且 $().ajax 表单调用的 error() 不会被命中。

this SO post 也有完全相同的问题。但是,我想知道当文件大小超出时如何向用户提供反馈,因为当前“loading.gif”只是在旋转,因为没有引发错误响应。

【问题讨论】:

    标签: jquery asp.net-mvc file-upload error-handling maxrequestlength


    【解决方案1】:

    检查这个关于客户端检查文件大小的 SO 问题,以便在尝试上传太大的文件之前能够捕获它。 Find size of file behind download link with jQuery

    编辑

    如果文件大小大于您在 web.config 文件中的设置,服务器将抛出异常,因此如果您想在服务器端处理它,您可以做一些事情。

    1) 您可以增加最大文件大小,然后您的上传代码可以验证较小的大小,如果文件太大则返回失败。当然,如果他们尝试比您的新尺寸更大的东西,它仍然会失败。

    2) 在 global.asax 文件中捕获错误并对其进行处理。设置响应头,返回 false 或其他。检查Catching "Maximum request length exceeded" 以帮助您开始使用此选项。

    3) 使用我之前提出的 JQuery 选项在客户端处理它或使用 Flash 来检查大小。

    基本上等待服务器告诉你文件太大通常为时已晚。该文件必须一直到那里才能告诉您哎呀太大了。这会对您的服务器造成更大的影响。如果可能的话,通常最好找到一种方法在客户端上进行检查。

    【讨论】:

    • 感谢您的回答,但我不确定这是否会有所帮助,因为它似乎正在获取服务器上已经存在的文件的 contentLength。我的情况是使用 上传文件。如果我误解了您的回答,请告诉我。
    • 有几种方法可以做到这一点,但如果您计划从服务器端提供一个简单的解决方案,您将不会喜欢它们。首先,如果您使用 web.config 来管理最大文件大小,您的上传页面在超过该数量时永远不会被命中。我将修改我的答案以发布可能的解决方案。
    猜你喜欢
    • 2017-03-12
    • 2016-01-14
    • 1970-01-01
    • 2022-01-20
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2020-10-15
    相关资源
    最近更新 更多