`
kokobox
  • 浏览: 17908 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于javascript判断文件大小-----闲聊

阅读更多
  





   对于web开发人员来说文件上传文件是经常遇到的,判断文件大小也是不可缺少,在这里主要介绍一下javascript判断文件大小的几种常见的方法。

   第一种是应用ActiveX控件的实现,例如:
<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则会屏蔽掉安全提示,但很难被需求所取。不推荐,也不多说

   下面主要谈谈另一种方式,在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... , 代码如下:

<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.value)">
</body>


经测试,得到文件大小,并未出现安全提示,推荐,没的说















9
9
分享到:
评论
23 楼 wenjianping007 2012-10-11  
IE8 也不行 同IE7的错误
22 楼 zoutuo 2009-10-30  
IE7.0,出现错误:无法设置dynscr属性,拒绝访问
21 楼 loocao 2009-05-12  
问题多多啊...
20 楼 accphc 2008-09-23  
IE7.0,出现错误:无法设置dynscr属性,拒绝访问
IE6.0,通过。。。
火狐,出新undifine
最新的浏览器,谷歌,通火狐。
现在在怀疑,google是不是搞定火狐的,那么相似,
这个属性适用范围太小了!那在上传文件之前判断文件大小怎么办?
19 楼 kokobox 2008-08-14  
这个我找个时间测试一下,因为我们的程序都在用这个,只是后台有也判断,前面用try或其他操作屏蔽了异常,也是为了增加一些IE用户的提交和校验数据的速度

由于我们都是配机给客户,可能是大部分用户用的都是IE6,即使用了火狐由于屏蔽了js异常转为后台校验,所以没有这个Bug报告上来

18 楼 dddccc_123 2008-08-14  
顺便说下。。我把dynsrc换成大写DYNSRC,IE7下可以运行,可是每次size都为-1
17 楼 kokobox 2008-08-14  
IE7 没试过,我这里没有IE7

等有机会了试一试
16 楼 dddccc_123 2008-08-14  
IE7 试过了没
15 楼 kokobox 2008-08-14  
遨游---->傲游
14 楼 kokobox 2008-08-14  
遨游可以啊,你的怎么不可以?

难度是遨游版本的问题?????

你的代码和我写的一样吗?
13 楼 kokobox 2008-08-14  
我去试一试遨游看看
12 楼 kokobox 2008-08-14  
又来一个,csdn都搬到这里来了

只针对IE,这只是在前台过滤,后台当然你还要再判断一次的啦

11 楼 yirentianran 2008-08-14  
傲游不行啊 返回-1
10 楼 kokobox 2008-08-13  
竹子也来了,csdn的版主都来这里玩了

也不知道csdn什么时候可以登陆。。。。。

我也从来没写过技术博客,没想到这么多人能来看

感觉这里的帖子有点像文章,感觉这里的博客有点像论坛,呵呵,还有点不太习惯

可能习惯csdn了
9 楼 java2000_net 2008-08-13  
纯IE,返回了文件从长度
8 楼 java2000_net 2008-08-13  
IE6 傲游 测试失败,为-1
ff 下直接为undefine
7 楼 kokobox 2008-08-13  
应该不会吧,如果要是 new Image(); dynsrc是不会出现拒绝访问的,如果是对标签<img >动态处理的话,在服务器下会报告dynsrc拒绝访问。。

由于我没有IE7 不好测试

等下班了,我找个机会看看,ff下不行我早已测试过,只是在文章里没有写。


6 楼 dddccc_123 2008-08-13  
我又换了IE6试了。。是可以的
5 楼 dddccc_123 2008-08-13  
错误是 无法设置synsrc属性。拒绝访问
4 楼 dddccc_123 2008-08-13  
IE7 貌似把dynsrc这个属性的写去掉了,只能读了

相关推荐

Global site tag (gtag.js) - Google Analytics