ASP.NET中使用js JavaScript获取FileUpload 文件大小
2011-02-21 21:55
597 查看
后台代码中,虽然可以通过FileContent.Length来获取大小,不过这种方法应尽量避免使用。
服务器端代码会在服务器端运行,所以用该方法验证会发现很慢。因为页面首先会把文件上传到服务器临时空间,由服务器再获取文件大小。所以效率很低,严重占用带宽。方法不可取。尤其网速不好的情况下,客户上传了半天,才弹出个文件太大的提示,不崩溃才怪。
因此,首选js代码。
下面是正文:
首先在页面添加一个FileUpLoad控件。(再次以id为fudPolicy为例)
然后添加一个上传Button。示例界面如图。
<script language="javascript" type="text/javascript">
//验证文件大小
function ckFileSize()
{
//把附件当做图片处理放在缓冲区预加载
var file=new Image();
//设置附件的url
file.dynsrc=document.getElementById("fudPolicy").value;
//获取上传的文件的大小
var filesize=file.fileSize/1024;
if(filesize>3072)
{
alert("上传的文件不得大于M");
return false;
}
return true;
}
</script>
最后在onload事件里调用即可。
IE6 测试通过,IE7测试拒绝访问。
IE7可以使用如下代码
<script type="text/javascript">
function getFileSize(filePath)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
alert("文件大小为:"+fso.GetFile(filePath).size);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value);">
</body>
这种方法可以实现,也容易被开发人员想到,但是唯一不足之处是有安全提示,当然把文件名改为.hta则会屏蔽掉安全提示,但很难被需求所取。不推荐,也不多说
<form id="form1" runat="server" onsubmit="return ckFileSize()">
下面主要谈谈另一种方式,在html标签中有一个不为一般开发人员“深”知得img标签,先来说下它有得属性:src,dynsrc,start,alt,controls,loop,loopdelay,hspace,vspace....还有一些常用得属性就不列出来了,在这里我们说一下"dynsrc"这个属性:dynsrc可以用来插入各种多媒体,格式可以是Wav、Avi、AIFF、AU、MP3、Ra、Ram等等。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例:<img dynsrc="xxxx.mp3">
这样我们就可以根据dynsrc动态赋值任何类型文件得路径,在javascript中根据Image对象本身得fileSize属性来得到文件得大小。当然Image对象还有其它得几个属性,例如:fileCreatedDate、fileModifiedDate、fileSize、fileUpdatedDate、filters... , 代码如下:
Javascript代码
<script type="text/javascript">
function getFileSize(filePath)
{
var image=new Image();
image.dynsrc=filePath;
alert(image.fileSize);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this)">
</body>
<script type="text/javascript">
function getFileSize(fileObj)
{
var image=new Image();
image.dynsrc=fileObj.value;
alert(image.fileSize || fileObj.files[0].fileSize);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">
</body>
javascript判断文件类型
var type=(src.substr(src.lastIndexOf("."))).toLowerCase();
if(type!=".jpg"&&type!=".gif"&&type!=".jpeg"&& type!=".png"){alert("您上传图片的类型不符合(.jpg|.jpeg|.gif|.png)!");return false;}
服务器端代码会在服务器端运行,所以用该方法验证会发现很慢。因为页面首先会把文件上传到服务器临时空间,由服务器再获取文件大小。所以效率很低,严重占用带宽。方法不可取。尤其网速不好的情况下,客户上传了半天,才弹出个文件太大的提示,不崩溃才怪。
因此,首选js代码。
下面是正文:
首先在页面添加一个FileUpLoad控件。(再次以id为fudPolicy为例)
然后添加一个上传Button。示例界面如图。
<script language="javascript" type="text/javascript">
//验证文件大小
function ckFileSize()
{
//把附件当做图片处理放在缓冲区预加载
var file=new Image();
//设置附件的url
file.dynsrc=document.getElementById("fudPolicy").value;
//获取上传的文件的大小
var filesize=file.fileSize/1024;
if(filesize>3072)
{
alert("上传的文件不得大于M");
return false;
}
return true;
}
</script>
最后在onload事件里调用即可。
IE6 测试通过,IE7测试拒绝访问。
IE7可以使用如下代码
<script type="text/javascript">
function getFileSize(filePath)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
alert("文件大小为:"+fso.GetFile(filePath).size);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value);">
</body>
这种方法可以实现,也容易被开发人员想到,但是唯一不足之处是有安全提示,当然把文件名改为.hta则会屏蔽掉安全提示,但很难被需求所取。不推荐,也不多说
<form id="form1" runat="server" onsubmit="return ckFileSize()">
下面主要谈谈另一种方式,在html标签中有一个不为一般开发人员“深”知得img标签,先来说下它有得属性:src,dynsrc,start,alt,controls,loop,loopdelay,hspace,vspace....还有一些常用得属性就不列出来了,在这里我们说一下"dynsrc"这个属性:dynsrc可以用来插入各种多媒体,格式可以是Wav、Avi、AIFF、AU、MP3、Ra、Ram等等。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例:<img dynsrc="xxxx.mp3">
这样我们就可以根据dynsrc动态赋值任何类型文件得路径,在javascript中根据Image对象本身得fileSize属性来得到文件得大小。当然Image对象还有其它得几个属性,例如:fileCreatedDate、fileModifiedDate、fileSize、fileUpdatedDate、filters... , 代码如下:
Javascript代码
<script type="text/javascript">
function getFileSize(filePath)
{
var image=new Image();
image.dynsrc=filePath;
alert(image.fileSize);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this)">
</body>
<script type="text/javascript">
function getFileSize(fileObj)
{
var image=new Image();
image.dynsrc=fileObj.value;
alert(image.fileSize || fileObj.files[0].fileSize);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">
</body>
javascript判断文件类型
var type=(src.substr(src.lastIndexOf("."))).toLowerCase();
if(type!=".jpg"&&type!=".gif"&&type!=".jpeg"&& type!=".png"){alert("您上传图片的类型不符合(.jpg|.jpeg|.gif|.png)!");return false;}
相关文章推荐
- 使用rewrite 让php 实现类似asp.net 的IHttpModule 进行带参数js文件的参数获取
- asp.net上传文件使用fileupload控件,判断文件类型和大小,取得文件路径时报错【System.IO.FileNotFoundException:未能找到文件】的解决办法
- javascript(js脚本)获取上传文件的大小
- asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度
- asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度
- asp.net上传文件使用file控件,判断文件大小,取得文件路径时报错【System.IO.FileNotFoundException:未能找到文件】的解决办法
- Asp.Net 获取FileUpload控件的文件路径、文件名
- Asp.Net 获取FileUpload控件的文件路径、文件名、扩展名
- 使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- ASP.NET使用FileUpload上传文件
- ASP.NET MVC 引入JavaScript(.JS)文件
- asp.net 从cs类文件给js传值,js javascript获得后台传来的方法值或变量值
- ASP.NET 使用js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)
- Asp.Net 4.5网站使用IIS发布 uploadify插件 上传文件大小问题
- Asp.Net 获取FileUpload控件的文件路径、文件名、扩展名
- ASP.NET使用FileUpload上传文件
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net_文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- JavaScript打开窗口函数(Window.Open)使用详解、绝对路径与相对路径的获取与转换(含ASP.NET)