【问题标题】:Best way to make sure the user dont upload images more than 1MB in size确保用户上传的图片大小不超过 1MB 的最佳方法
【发布时间】:2010-10-23 02:12:06
【问题描述】:

我将 ASP.net 与 VB.NET 一起使用。 是否有一些我可以使用的验证器来检查上传图像的大小? 否则我必须在代码中做些什么来确保用户上传的图片不超过 1MB?

p.s C# 代码也可以,我可以使用转换器到 VB.NET

编辑

由于某种原因,当我将 maxRequestLength 更改为 1024(在我的 WEB.config 中)并上传大小为 1.25mb 的图像时,我得到 Microsoft 错误页面,显示“Internet Explorer 无法显示网页”。我的提交按钮内确实有一个 Try Catch 块。如果我从我的 Web.config 中删除 maxRequestLength,那么它工作正常。

【问题讨论】:

  • 同样的问题已经发布在这里:stackoverflow.com/questions/158149/…
  • 这是一个类似的问题,但这是针对 Java 的。 ASP.NET 有不同的机制。
  • 是的,我在发布我的问题之前也看到了这个问题,谢谢鲍比!!

标签: c# asp.net vb.net image file-upload


【解决方案1】:

这最终在 Web.config 中处理。查找 httpRuntime 部分:

<httpRuntime 
 executionTimeout="110" 
 maxRequestLength="4096" 
/>

httpRuntime 中还有许多其他设置,但这些是相关的两个。在这里,maxRequestLength 设置为 4096,即 4KB(数字以字节为单位)。因此,请相应地设置此值。此外,您还需要相应地设置 executionTimeout,以便提供合理的时间来上传您最大上传的内容。

【讨论】:

  • 如果上传超过这个大小,ASP.net 甚至不会处理请求。
  • @Saint 这可能是件好事,不会因为有人从数百个客户端上传千兆字节文件而遭到 DDOS 攻击;)
  • 我以前试过这个,但由于某种原因,当我将 maxRequestLength 更改为 1024 并上传大小为 1.25mb 的图像时,我得到 Microsoft 错误页面,显示“Internet Explorer 无法显示网页”。 ........而且我的提交按钮内确实有一个 Try Catch 块.....
  • 您将其设置为 1024?那只有1KB。 1MB = 1024 * 1024 字节。
  • @Bobby,我明白这一点,但我认为它会抛出一些异常并进入我的 Try Catch 块,以便我可以告诉用户图像太大。
【解决方案2】:

您可以使用以下代码来确定上传文件的大小 [以 KB 为单位],一旦知道大小,您就可以轻松决定是继续处理文件还是拒绝上传。

Request.Files(0).ContentLength / 1024

【讨论】:

  • 是的,但默认情况下,我认为最大大小小于 1MB,因此您仍然需要处理 Web.config。
【解决方案3】:

无法显示网页错误是因为 ASP.NET 中断了超大请求的连接,以减轻基于超大请求的 DOS 攻击。为了解决这个问题,您必须在 iframe 中进行上传,然后检测是否发生错误。您还可以使用安装在客户端上的 flash、silverlight、java 或 activex 上传器组件来验证客户端的文件大小,但这需要根据您的解决方案进行安装。

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 2012-05-16
    • 2019-09-23
    • 2013-01-04
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多