限制ASP.NET中文件上传的大小

5

我希望限制文件上传的大小,但问题在于当上传大小超过限制时,我想提供一个弹出警告框,但实际上网页显示以下错误信息:

HTTP Error 404.13 - Not Found

请求筛选模块被配置为拒绝超过请求内容长度的请求。 这是我的代码

 protected void Button1_Click(object sender, EventArgs e)
{
    if (fuDocpath.HasFiles)
    {
        try
        {
            DateTime now = DateTime.Now;
            lbldateStamp.Text = now.ToString("mm_dd_yyyy_hh_mm_ss");
            //string foldername = lblsessionID.Text + "_" + lbldateStamp.Text;
            string folderpath = (Server.MapPath("~/Uploaded_Files/") + lblsessionID.Text + "_" + lbldateStamp.Text + "/");
            Directory.CreateDirectory(folderpath);
            if (fuDocpath.PostedFile.ContentLength < 20970000)
            {
                try
                {
                    foreach (HttpPostedFile files in fuDocpath.PostedFiles)
                    {
                        string filename = Path.GetFileName(files.FileName);
                        string folderpath1 = folderpath + "/";
                        fuDocpath.SaveAs(folderpath1 + filename);
                        lblName.Text = lblName.Text + "|" + filename;
                        lblerror.Text = string.Empty;
                    }
                }
                catch (Exception eex)
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + eex.Message + "')", true);
                }

            }
        }
        catch (Exception ex)
        {
            lblerror.Text = "File couldn't be uploaded." + ex.Message;
            lblName.Text = string.Empty;
        }
    }
}

你想要上传的文件总大小是多少? - Usman
任何大小在10到15 MB之间的地方。我正在创建基于用户的应用程序。因此,客户将上传总最大大小为15 MB的文件。 - krishb591993
你的代码运行良好,我没有收到任何错误。当出现此错误时,你能告诉我们你实际在做什么吗?或者提供重现此问题的步骤吗? - Usman
只需尝试上传大于5 MB的任何内容,就不会显示弹出警报。 - krishb591993
你能用jQuery吗?这样可以很容易地检查文件大小并在jQuery中显示弹出警报。 - Aj_sari
我不会jQuery,否则我就会打上标签了。 - krishb591993
2个回答

6

1
但是如果我想要显示弹出警报,以便在上传任何大于某个大小的文件时进行提示呢? - krishb591993
3
你需要使用客户端验证。这个链接可能会有所帮助 - http://www.codeproject.com/Tips/290098/Asp-Net-Custom-Validator-Control-to-validate-file - 这是一个用于FileUpload控件的自定义验证器,基本上可以实现你试图做的事情。 - sh1rts

1

如果你想了解浏览器抛出的错误代码/消息的性质,这里有一篇文章可以解答。

默认情况下,ASP.NET仅允许上传4,096千字节(KB)(或4 MB)以下的文件到Web服务器。要上传更大的文件,您必须更改Web.config文件中<httpRuntime>部分的maxRequestLength参数。

注意:当在Machine.config文件中设置maxRequestLength属性,然后提交请求(例如,上传文件)超过maxRequestLength的值时,无法显示自定义错误页面。相反,Microsoft Internet Explorer将显示“找不到服务器或DNS”错误消息。

解决方法是按照@sh1rts之前给出的答案修改Machine.config文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接