我有一个允许用户上传图片的MVC3网站。如果用户尝试在web.config中上传大于允许值的图像,则会给出404响应。我正在使用FileUpload控件。用户在提交表单时收到404响应且文件太大。
这是一个讨论如何解决问题的article,但它只解释了如何增加文件的最大大小。我不想增加大小,而是在用户提供友好消息时。
我想在它返回之前拦截这个响应,所以我可以给他们一个友好的消息,解释为什么他们无法上传文件。
这可能吗?
答案 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攻击。