首先 对于ie 必须使用ActiveXObject 来访问本地文件。 这就需要将浏览器的 安全级别调低。 然后重点就是如何在ie8获取本地路径。
<input id="upload_img" type="file" οnchange="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" οnchange="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>