使用ASP.Net中的FileUpload控件警告用户文件大小太大

时间:2012-05-21 09:30:34

标签: asp.net file-upload filesize

我正在使用FileUpload控件来允许用户将文件上传到SQL数据库。

我有一个按钮,用于通过C#代码加载所选文件。

但是,如果文件大小具有一定的大小,则上载失败。我在C#代码上有一个断点,当大小很大时它永远不会被击中,但是当文件大小正常时它会发生。这是我可以放置支票的地方,但断点不会被击中!??!

实施此方法的最佳方法是什么?我应该使用JavaScript吗?

按钮后面的C#代码位于下方,但它永远不会被解雇:

protected void buttonAddDocumentType_Click(object sender, EventArgs e)
{
    int size = fileUploadDocument.PostedFile.ContentLength;

    //This is where I'd like to perform the file size check 

    byte[] fileData = new byte[size];

    fileUploadDocument.PostedFile.InputStream.Read(fileData, 0, size);

    WebDataAccess.InsertDocument(Int32.Parse(Request.QueryString["ID"].ToString()), Int32.Parse(comboDocumentTypes.SelectedValue), fileUploadDocument.FileName, fileUploadDocument.PostedFile.ContentType,
                fileUploadDocument.FileBytes.Count(), fileData);

    comboDocumentTypes.SelectedIndex = -1;
}

我正在使用ASP.Net 4.0

提前致谢。

2 个答案:

答案 0 :(得分:1)

Asp.Net有文件上传的上限。您可以在web.config中配置此限制,并在启动文件上载事件之前验证此范围。

无法使用代码来捕获此错误,因为它发生在任何代码启动之前。

答案 1 :(得分:0)

首先,如果您的有效上传量大于4MB,则需要在web.config中增加maxRequestLength,

假设您接受最大10MB的文件,将其更改为16MB,现在您在代码中处理任何大于10MB的文件,并且asp.net运行时拒绝任何大于16MB的文件。您不希望将maxRequestLength更改为非常高的数字,因为人们可能会使用大文件攻击您的服务器。

<system.web><httpRuntime maxRequestLength="16384" />

您可以查看

fileImageControl.PostedFile.InputStream.Length 
在你打电话之前的

属性:

fileImageControl.PostedFile.SaveAs

我总是将所有上传的文件保存到临时目录中,并在将它们保存到最终位置之前对它们进行一些检查。您还可以将它们标记为“从Internet下载”,因此Windows会相应地对待它们(但如果将它们保存到数据库中则不起作用)。