问题描述
ASP.NET在上传文件前判断文件大小的问题大家好,VisualStudio的WebForm中我用了FileUpload控件来向数据库提交文件,我知道IIS默认限制4M;而我是通过程序控制到了3M以下。但每次判断都是文件上载之后,才能通过FileUpload1.PostedFile.ContentLength取到文件大小。如果用户上传了大于4M或更大的文件,IE会报错,体验不好;请问ASP.NET是否有办法在文件上载之前,判断文件大小呢?
解决方案
解决方案二:
JQuery验证文件大小,兼容性好。functionfindSize(field_id){varfileInput=$("#"+field_id)[0];byteSize=fileInput.files[0].fileSize;return(Math.ceil(byteSize/1024));//SizereturnedinKB.}
解决方案三:
引用楼主smilelake999的回复:
ASP.NET在上传文件前判断文件大小的问题大家好,VisualStudio的WebForm中我用了FileUpload控件来向数据库提交文件,我知道IIS默认限制4M;而我是通过程序控制到了3M以下。但每次判断都是文件上载之后,才能通过FileUpload1.PostedFile.ContentLength取到文件大小。如果用户上传了大于4M或更大的文件,IE会报错,体验不好;请问ASP.NET是否有办法在文件上载之前,判断文件大小呢?
纯JS不好解决这个问题,如果希望在客户端验证的话只能借助于控件来实现。
解决方案四:
引用楼主smilelake999的回复:
ASP.NET在上传文件前判断文件大小的问题大家好,VisualStudio的WebForm中我用了FileUpload控件来向数据库提交文件,我知道IIS默认限制4M;而我是通过程序控制到了3M以下。但每次判断都是文件上载之后,才能通过FileUpload1.PostedFile.ContentLength取到文件大小。如果用户上传了大于4M或更大的文件,IE会报错,体验不好;请问ASP.NET是否有办法在文件上载之前,判断文件大小呢?
只能用控件来做。我们公司现在做的一个项目也是有这个需求,我们项目组是用的Xproer.HttpUploader2这个控件来实现的。下面是实现的代码。服务器返回消息:<inputid="txtFilePath"type="text"size="50"/><divid="divUpload"></div><scripttype="text/javascript"language="javascript">varfileMgr=newHttpUploaderSingleMgr();fileMgr.Config["PostUrl"]="http://localhost:8080/asp.net/upload.aspx";//指定文件上传地址,可以在这里设置文件服务器地址fileMgr.LoadTo("divUpload");functiontestFileSize(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileSize("D:\VS2012.SP4.iso"));}functiontestFileLength(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileLength("D:\VS2012.SP4.iso"));}</script>
解决方案五:
引用楼主smilelake999的回复:
ASP.NET在上传文件前判断文件大小的问题大家好,VisualStudio的WebForm中我用了FileUpload控件来向数据库提交文件,我知道IIS默认限制4M;而我是通过程序控制到了3M以下。但每次判断都是文件上载之后,才能通过FileUpload1.PostedFile.ContentLength取到文件大小。如果用户上传了大于4M或更大的文件,IE会报错,体验不好;请问ASP.NET是否有办法在文件上载之前,判断文件大小呢?
要么借助flash判断(就是客户端判断)(一些flash上传组件)要么HTML5自带的属性可以判断!(兼容性不好)然后就没有别的好办法了
解决方案六:
不支持Html5的IE没法验证而我的做法就是在上传后一定时间内服务器没响应,我就直接抛出一个提示,说上传失败……当然,我是通过js生成form上传的……
解决方案七:
引用3楼d1g9z93w的回复:
Quote: 引用楼主smilelake999的回复:
ASP.NET在上传文件前判断文件大小的问题大家好,VisualStudio的WebForm中我用了FileUpload控件来向数据库提交文件,我知道IIS默认限制4M;而我是通过程序控制到了3M以下。但每次判断都是文件上载之后,才能通过FileUpload1.PostedFile.ContentLength取到文件大小。如果用户上传了大于4M或更大的文件,IE会报错,体验不好;请问ASP.NET是否有办法在文件上载之前,判断文件大小呢?只能用控件来做。我们公司现在做的一个项目也是有这个需求,我们项目组是用的Xproer.HttpUploader2这个控件来实现的。下面是实现的代码。服务器返回消息:<inputid="txtFilePath"type="text"size="50"/><divid="divUpload"></div><scripttype="text/javascript"language="javascript">varfileMgr=newHttpUploaderSingleMgr();fileMgr.Config["PostUrl"]="http://localhost:8080/asp.net/upload.aspx";//指定文件上传地址,可以在这里设置文件服务器地址fileMgr.LoadTo("divUpload");functiontestFileSize(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileSize("D:\VS2012.SP4.iso"));}functiontestFileLength(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileLength("D:\VS2012.SP4.iso"));}</script>
你们这个是ActiveX?
解决方案八:
引用6楼smilelake999的回复:
Quote: 引用3楼d1g9z93w的回复:
Quote: 引用楼主smilelake999的回复:
ASP.NET在上传文件前判断文件大小的问题大家好,VisualStudio的WebForm中我用了FileUpload控件来向数据库提交文件,我知道IIS默认限制4M;而我是通过程序控制到了3M以下。但每次判断都是文件上载之后,才能通过FileUpload1.PostedFile.ContentLength取到文件大小。如果用户上传了大于4M或更大的文件,IE会报错,体验不好;请问ASP.NET是否有办法在文件上载之前,判断文件大小呢?只能用控件来做。我们公司现在做的一个项目也是有这个需求,我们项目组是用的Xproer.HttpUploader2这个控件来实现的。下面是实现的代码。服务器返回消息:<inputid="txtFilePath"type="text"size="50"/><divid="divUpload"></div><scripttype="text/javascript"language="javascript">varfileMgr=newHttpUploaderSingleMgr();fileMgr.Config["PostUrl"]="http://localhost:8080/asp.net/upload.aspx";//指定文件上传地址,可以在这里设置文件服务器地址fileMgr.LoadTo("divUpload");functiontestFileSize(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileSize("D:\VS2012.SP4.iso"));}functiontestFileLength(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileLength("D:\VS2012.SP4.iso"));}</script>
你们这个是ActiveX?
嗯。是ActiveX和NPAPI,可以在ie,firefox,chrome44以及基于这些内核的浏览器中运行。基本上国内主流浏览器都支持了。上周项目就布署到客户那边开始跑了。
解决方案九:
引用1楼ajianchina的回复:
JQuery验证文件大小,兼容性好。functionfindSize(field_id){varfileInput=$("#"+field_id)[0];byteSize=fileInput.files[0].fileSize;return(Math.ceil(byteSize/1024));//SizereturnedinKB.}
这饼不是jq这是html5
解决方案十:
引用7楼d1g9z93w的回复:
Quote: 引用6楼smilelake999的回复:
Quote: 引用3楼d1g9z93w的回复:
Quote: 引用楼主smilelake999的回复:
ASP.NET在上传文件前判断文件大小的问题大家好,VisualStudio的WebForm中我用了FileUpload控件来向数据库提交文件,我知道IIS默认限制4M;而我是通过程序控制到了3M以下。但每次判断都是文件上载之后,才能通过FileUpload1.PostedFile.ContentLength取到文件大小。如果用户上传了大于4M或更大的文件,IE会报错,体验不好;请问ASP.NET是否有办法在文件上载之前,判断文件大小呢?只能用控件来做。我们公司现在做的一个项目也是有这个需求,我们项目组是用的Xproer.HttpUploader2这个控件来实现的。下面是实现的代码。服务器返回消息:<inputid="txtFilePath"type="text"size="50"/><divid="divUpload"></div><scripttype="text/javascript"language="javascript">varfileMgr=newHttpUploaderSingleMgr();fileMgr.Config["PostUrl"]="http://localhost:8080/asp.net/upload.aspx";//指定文件上传地址,可以在这里设置文件服务器地址fileMgr.LoadTo("divUpload");functiontestFileSize(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileSize("D:\VS2012.SP4.iso"));}functiontestFileLength(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileLength("D:\VS2012.SP4.iso"));}</script>
你们这个是ActiveX?
嗯。是ActiveX和NPAPI,可以在ie,firefox,chrome44以及基于这些内核的浏览器中运行。基本上国内主流浏览器都支持了。上周项目就布署到客户那边开始跑了。
ActiveX需要客户端做配置吧?
解决方案十一:
引用9楼smilelake999的回复:
Quote: 引用7楼d1g9z93w的回复:
Quote: 引用6楼smilelake999的回复:
Quote: 引用3楼d1g9z93w的回复:
Quote: 引用楼主smilelake999的回复:
ASP.NET在上传文件前判断文件大小的问题大家好,VisualStudio的WebForm中我用了FileUpload控件来向数据库提交文件,我知道IIS默认限制4M;而我是通过程序控制到了3M以下。但每次判断都是文件上载之后,才能通过FileUpload1.PostedFile.ContentLength取到文件大小。如果用户上传了大于4M或更大的文件,IE会报错,体验不好;请问ASP.NET是否有办法在文件上载之前,判断文件大小呢?只能用控件来做。我们公司现在做的一个项目也是有这个需求,我们项目组是用的Xproer.HttpUploader2这个控件来实现的。下面是实现的代码。服务器返回消息:<inputid="txtFilePath"type="text"size="50"/><divid="divUpload"></div><scripttype="text/javascript"language="javascript">varfileMgr=newHttpUploaderSingleMgr();fileMgr.Config["PostUrl"]="http://localhost:8080/asp.net/upload.aspx";//指定文件上传地址,可以在这里设置文件服务器地址fileMgr.LoadTo("divUpload");functiontestFileSize(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileSize("D:\VS2012.SP4.iso"));}functiontestFileLength(){varobj=newActiveXObject(fileMgr.ActiveX["Partition"]);alert(obj.FileLength("D:\VS2012.SP4.iso"));}</script>
你们这个是ActiveX?
嗯。是ActiveX和NPAPI,可以在ie,firefox,chrome44以及基于这些内核的浏览器中运行。基本上国内主流浏览器都支持了。上周项目就布署到客户那边开始跑了。
ActiveX需要客户端做配置吧?
不需要,全自动化的。访问含ActiveX的页面时,IE会提示用户安装一个控件。用户点击安装就行了。