限制用户上传大文件

时间:2012-11-01 11:19:58

标签: c# asp.net

请在下面找到我的代码。我试图限制用户上传小于4 MB的文件,但是当我选择830 KB的文件时,我的内容长度为80 MB。
此代码flSignature.PostedFile.ContentLength无效。请帮忙。

TIA

string uploadMsg = "";
string appPath = Server.MapPath("~");
string parentpath = appPath + "\\app\\Pictures\\";
//To Upload Multiple Files on Single Click 
HttpFileCollection hfc = Request.Files;
for (int i = 0; i < hfc.Count; i++)
{
    HttpPostedFile hpf = hfc[i];

    if (hpf.ContentLength > 0)
    {
        //if (hpf.ContentLength > 4096)
        //{
        //   uploadMsg = "Collective file size is more than 4 MB.";
        //}
        //else
        //{
        if (hfc.AllKeys[i].Contains("flSignature"))
        {
            if (flSignature.PostedFile.ContentLength > 4096)
            { 
                uploadMsg = "Collective file size is more than 4 MB.";
                break;
            }
            else
            {
                if (Path.GetFileName(hpf.FileName).ToLower().Contains("xls") || Path.GetFileName(hpf.FileName).ToLower().Contains("doc"))
                {
                    showalert("Only Image can be uploaded.");
                }
                else
                {
                    hpf.SaveAs(parentpath + lblUniqueNo.Text + "_signature_" + Path.GetFileName(hpf.FileName));
                }
            }
        }
        else if (hfc.AllKeys[i].Contains("flPhoto"))
        {
            if (flPhoto.PostedFile.ContentLength > 4096)
            {
                uploadMsg = "Collective file size is more than 4 MB.";
                break;
            }
            else
            {
                if (Path.GetFileName(hpf.FileName).ToLower().Contains("xls") || Path.GetFileName(hpf.FileName).ToLower().Contains("doc"))
                {
                    showalert("Only Image can be uploaded.");
                }
                else
                {
                    hpf.SaveAs(parentpath + lblUniqueNo.Text + "_passport_" + Path.GetFileName(hpf.FileName));

                }
            }
        }
        else if (hfc.AllKeys[i].Contains("flIdentDoc"))
        {
            if (flIdentDoc.PostedFile.ContentLength > 4096)
            {
                uploadMsg = "Collective file size is more than 4 MB.";
                break;
            }
            else
            {
                hpf.SaveAs(parentpath + lblUniqueNo.Text + "_doc_" + Path.GetFileName(hpf.FileName));
            }
        }


        //}
    }
}

2 个答案:

答案 0 :(得分:5)

ContentLength属性携带的值以字节表示,而不是以千字节为单位。

因此,当您发出flSignature.PostedFile.ContentLength > 4096时,您实际上是在检查上传文件的大小是否大于4千字节,而不是4兆字节。

尝试类似:

if (flSignature.PostedFile.ContentLength > 4096 * 1024)  // 4194304 bytes
{ 
    uploadMsg = "Collective file size is more than 4 MB.";
    break;
}

答案 1 :(得分:2)

当您浏览的文件大小超过PostedFile.ContentLength文件中maxrequest长度{/ 1}}时,

web.config必须正常工作