当文件大小超过限制时,如何拦截文件上的HTTP 404响应?

时间:2011-10-05 18:47:53

标签: image asp.net-mvc-3

我有一个允许用户上传图片的MVC3网站。如果用户尝试在web.config中上传大于允许值的图像,则会给出404响应。我正在使用FileUpload控件。用户在提交表单时收到404响应且文件太大。

这是一个讨论如何解决问题的article,但它只解释了如何增加文件的最大大小。我不想增加大小,而是在用户提供友好消息时。

我想在它返回之前拦截这个响应,所以我可以给他们一个友好的消息,解释为什么他们无法上传文件。

这可能吗?

2 个答案:

答案 0 :(得分:2)

抛出异常是否可以在global.asax中的Application_Error事件期间获取?

我不确定你提到的这个特定的FileUpload控件是什么,但是使用普通的MVC3应用程序,当我上传文件时,Visual Studio Web服务器(“cassini”)会响应504错误。当上传的文件太大时,框架会抛出HttpException。你可以这样抓住它:

protected void Application_Error()
        {
            var ex = Server.GetLastError();

            if (ex.Message == "Maximum request length exceeded.")
            {
                //respond another way.
            }
        }

本文是大文件上传风险的一个很好的参考:http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

答案 1 :(得分:0)

请参阅此答案,它会在每次回复之前添加回复检查,但确实有效:https://stackoverflow.com/a/15532171/1033228

另外,您无需增加最大上传大小(超出所需的最大值),从而让自己受到DOS攻击。