您的位置:首页 > Web前端 > JavaScript

js限制本地上传文件大小(支持ie6,7,8 firefox 谷歌)

2012-04-04 21:44 543 查看
首先 对于ie 必须使用ActiveXObject 来访问本地文件。 这就需要将浏览器的 安全级别调低。 然后重点就是如何在ie8获取本地路径。

<input id="upload_img" type="file" onchange="onUploadImgChange(this)" />


fileInput.select();
var url = document.selection.createRange().text;
$('#imageTest').attr('src',url);
try{
var fso = new ActiveXObject("Scripting.FileSystemObject");
}
catch(e)
{
alert('如果你用的是ie8 请将安全级别调低!');
}
alert("文件大小为:"+fso.GetFile(url).size);


而对于 firefox 谷歌等新一代的浏览器 直接可以通过fileInput.files 来获取file的对象数组

if( fileInput.files &&  fileInput.files[0] ){
alert(fileInput);
alert( fileInput.files[0])
alert('你选择的文件大小'+fileInput.files[0].size);
var xx=fileInput.files[0];
for(var i in xx)
{
alert (xx[i])
}
}


下面是一个完成的测试例子。

	<input id="upload_img" type="file" onchange="onUploadImgChange(this)" />
<script type="text/javascript">
function onUploadImgChange(fileInput) {
var filePath = fileInput.value;
var fileExt = filePath.substring(filePath.lastIndexOf("."))
.toLowerCase();

if (!checkFileExt(fileExt))

{
alert("您上传的文件不是图片,请重新上传!");
return;
}
if (fileInput.files && fileInput.files[0]) {
alert(fileInput);
alert(fileInput.files[0])
alert('你选择的文件大小' + fileInput.files[0].size);
var xx = fileInput.files[0];
for ( var i in xx) {
alert(xx[i])
}
} else {
fileInput.select();
var url = document.selection.createRange().text;
try {
var fso = new ActiveXObject("Scripting.FileSystemObject");
} catch (e) {
alert('如果你用的是ie 请将安全级别调低!');
}
alert("文件大小为:" + fso.GetFile(url).size);
}
}
function checkFileExt(ext)

{
if (!ext.match(/.jpg|.gif|.png|.bmp/i)) {
return false;
}
return true;
}
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: