【问题标题】:Warn user that the file size is too big using a FileUpload control in ASP.Net使用 ASP.Net 中的 FileUpload 控件警告用户文件太大
【发布时间】:2012-05-21 09:30:34
【问题描述】:

我正在使用 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

提前致谢。

【问题讨论】:

  • 分享一些按钮事件的代码
  • 我已经添加了按钮事件代码
  • 查看 HLTM5 文件 API;尚未在每个浏览器上都可用,但未来的浪潮。您可以使用 .net 控件进行上传,使用本地 API 在支持它的浏览器中验证大小,并使用 webconfig 解决方案作为失败案例。

标签: asp.net file-upload filesize


【解决方案1】:

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

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

【讨论】:

  • 不,C# 代码甚至不会被触发。也许我可以用 JavaScript 做到这一点?感谢回复
  • 您用于上传文件的控件。
  • 我正在使用一个 ASP FileUpload 控件和一个 ASP 按钮。 FileUpload 选择文件,然后按钮插入文件。
【解决方案2】:

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

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

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

你可以查看

fileImageControl.PostedFile.InputStream.Length 

你打电话之前的财产:

fileImageControl.PostedFile.SaveAs

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

【讨论】:

  • 感谢您的回复。但就像我说的 C# 代码永远不会被解雇,所以我不能按照你的建议去做。另外,我不是在上传图片,而是在加载文档。
  • 我的意思是,由于 web.config 中的限制,您的代码永远不会触发,您需要增加允许的大小。 fileImageControl 只是我使用的示例 FileUpload 控件的名称,它不特定于图像,检查部分也适用于文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 2011-01-15
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
相关资源
最近更新 更多