asp.net mvc上传图片大小

时间:2009-03-10 02:31:40

标签: asp.net-mvc

如何查看用户上传图片的尺寸?客户端首先进行服务器端双重检查将是最佳解决方案。

2 个答案:

答案 0 :(得分:3)

您所描述的是在HTML 2.0规范中获取有关HttpFileUpload的更多信息的最终战斗,因为您正在引用表单POST的HTML规范。不幸的是,HttpFileUpload不允许你得到这个 - 甚至在Javascript中都没有。这是一个非常普遍的问题。

两种解决方案:

  • 正常的解决方案是更改web.config并修改http运行时(允许上传多长时间,如大文件需要30分钟)和http filesize来增加限制(默认为4 MB) )。这适用于Ruby / php,ASP.NET和ASP.NET MVC - 它适用于所有语言,因为HTML 2.0规范限制了您可以在表单POST上获得的HttpFileUpload数据。这将允许用户上传整个文件;然后,您将在服务器代码中处理您身边的限制。不是最好的解决方案;但是,除非你使用第三部分,否则它是唯一的解决方案。

  • 使用第三方“文件监视器”插件。

我见过的最简单的一个是Telerik的RadControls。这些控件为我们安装了HttpModule,HttpHandler和特殊的javascript。有几个第三方确实有,但基本上这是它的工作原理:

  • Javascript捕获HttpFileUpload提交,并将表单POST重新路由到特殊处理程序(例如/RadControlsUploadHandler.asmx)。
  • RadControlsUploadHandler更新实时上传的实际字节的静态变量。
  • 然后,Javascript加载一个“进度条”弹出窗口,该弹出窗口常量命中RadControlsUploadHandler.asmx以进行“状态”更新。此状态更新执行HttpModule,该HttpModule将正在处理原始Form帖子的静态变量数据读取到同一个处理程序。
  • 然后,模块通过“Progress Bar”ajax调用返回JSON数据,给出上传字节数,估计带宽等状态。

以下是Telerik进度条上传的演示:

http://demos.telerik.com/aspnet-ajax/upload/examples/customprogress/defaultcs.aspx

就个人而言,我不喜欢不知道他们如何锁定这些上传的线程 - 因为我在高使用率下使用这些第三方工具时存在可扩展性问题。但是,对于Joe Bloe的博客来说,它们是很棒的工具。

ASP.NET MVC的问题

这些第三方工具的问题在于它们只能在ASP.NET WebForms(标准ASP.NET)下工作。 ASP.NET MVC删除了整个ASP.NET WebForms概念 - 因此,渲染这些控件毫无用处。

嗯,也许这是一个有人写的新项目。 :)

答案 1 :(得分:1)

在没有允许用户访问文件系统的applet或ActiveX控件的情况下在客户端上查找大小是不可能的。出于安全原因,浏览器限制对文件系统的访问。在服务器端,上传的文件应具有与之关联的内容长度,您可以检查。