首页 新闻 搜索 专区 学院

JS验证文件大小问题,报:TypeError未定义错误

0
悬赏园豆:10 [已解决问题] 解决于 2015-09-06 15:49

使用JS验证文件大小,使用方法为

                var filesize = obj_file.files[0].size;

在IE11,IE10和chrome等现代浏览器上没有任何问题,但是在IE9\8\7上会报错。

具体信息是:

typeerror:无法获取未定义或null引用的属性

网上说因为IE9以上才会支持

filesize = obj_file.files[0].size;

这个方法。但是现在不想改变客户端的体验。请问有什么妙招来解决这个问题吗?

齐失陆的主页 齐失陆 | 菜鸟二级 | 园豆:201
提问于:2015-09-04 09:26
< >
分享
最佳答案
1

方案一:

 var a = document.getElementById('loadfile').value;
           $('#myImage').attr('src',a);
           var imgbytes = document.getElementById('myImage').size;
           var imgkbytes = Math.round(parseInt(imgbytes)/1024);
           alert(imgkbytes+' KB');

利用Image对象有size这种属性来抓取。未测试~

 

方案二

 var myFSO = new ActiveXObject("Scripting.FileSystemObject");
 var filepath = document.upload.file.value;
 var thefile = myFSO.getFile(filepath);
 var size = thefile.size;
 alert(size + " bytes");

利用ActiveX实现,未测试。

收获园豆:8
幻天芒 | 高人七级 |园豆:36608 | 2015-09-04 10:58

多谢回答,很详细。

方案二应该是可行,不过会在浏览器弹出active的提示,影响体验,无法采用。

方案一中,如果上传文件不是图片,任何格式文件都有image的这个属性吗?

JSP中代码如下:

<td class="tab_titel_left" colspan="2">
<div id="dvTitles" style="overflow-y:auto; overflow-x:auto; margin-bottom:8px;" >
</div>
<a href="javascript:void(0)" class="easyui-linkbutton" id="addBtn" iconCls='icon-add' onclick="addFile('dvTitles','applyFile')">添加</a>
<span style="vertical-align:middle;" id="xgfj_span"></span>
</td>

如何添加代码,和后台响应呢?

齐失陆 | 园豆:201 (菜鸟二级) | 2015-09-06 09:49

@齐失陆: 实验了下,方案一似乎不可行。没有低版本IE,在IE11上模拟测试的。可能还是采用flash这种方案比较easy一点。虽然flash要被淘汰,不过旧版本IE已经被淘汰了。

幻天芒 | 园豆:36608 (高人七级) | 2015-09-06 14:40

@幻天芒: 嗯,多谢

齐失陆 | 园豆:201 (菜鸟二级) | 2015-09-06 15:48
其他回答(2)
1

这个问题估计无解,客户端使用fso是有风险的,浏览器默认是不会开这个权限的,fso几乎有权限可以把c盘格式化。

收获园豆:1
空明流光 | 园豆:62 (初学一级) | 2015-09-04 19:29
1

ie8是阻止用户读取文件大小的,只有插件flash的fileupload

收获园豆:1
powerixao | 园豆:401 (菜鸟二级) | 2015-09-06 10:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册