使用输入[type =“file”]捕获表单帖子的响应

时间:2013-05-09 12:53:10

标签: c# asp.net forms internet-explorer http-post

我有以下HTML代码:

        <form action="@Url.Action("SavePicture", "Pictures")" method="post" enctype="multipart/form-data" id="SavePictureForm" target="my_iframe">
            <input type="file" name="file" class="fileUpload" multiple accept="image/*" />
        </form>
        <iframe name="my_iframe" id="my_iframe" src="" class="hhidden"></iframe>

form用于上传图片。问题是服务器上的web.config具有文件内容大小限制。

如果我上传了10MB的文件,但服务器最多接受5MB,我将收到错误。

以下是Chrome中错误的显示方式:

chrome error on uploading file with size greater than accepted

我在Global.asax.cs这样处理错误

protected void Application_Error(object sender, System.EventArgs e)
{
    var exle = Context.Server.GetLastError() as System.Web.HttpException;

    if (exle != null && exle.WebEventCode == System.Web.Management.WebEventCodes.RuntimeErrorPostTooLarge)
    {
        HandlePostTooLargeError();
    }
}

private void HandlePostTooLargeError()
{
    Server.ClearError();
    this.Context.Response.ClearHeaders();
    this.Context.Response.ClearContent();
    this.Context.Response.StatusCode = 503;
    this.Context.Response.Status = "503 Image too large";
    this.Context.Response.StatusDescription = "Image too large";
    this.Context.Response.Flush();
    this.Context.Response.End();
}

我的问题是除了Internet Explorer之外的所有浏览器都会显示一个对话框,其中包含“图像太大”的消息。

Internet Explorer在内部处理表单帖子,获取503错误代码但不执行任何操作。 (我可以在Developer ToolsNetwork标签中看到这一点

这是开发者工具/网络

捕获的IE的表单后期响应

ie's handling of form post error

然而,这个错误只出现在IE的开发者工具中,用户无法猜出是什么问题。

我需要一个解决方案来告知用户上传因特定原因而失败,但我无法找到问题的解决方案。

是否可以捕获表单帖子的响应并将其显示给用户?

0 个答案:

没有答案