IE9 获取File文件对象

原创
2017/03/15 19:44
阅读数 77.3W
<input type="file" id="file">

<script>
    var fileEle = document.getElementById('file');
    var fileObj = null;
    if(fileEle.files){
        fileObj = fileEle.files[0];
    }else{
        /*
            低版本IE由于JS安全问题,不允许JS访问本地文件,所以无法获取files
            对于低版本的IE可以使用ActiveXObject获取文件对象, 但是默认情况下
            ActiveXObject为不可用的, 所以要想使用此对象要先启用设置, 即:
                Tools(工具) / Internet options(选项) / Security(安全) / Custom level(自定义级别)
                找到"Initialize and script ActiveX controls not marked as safe for scripting"
                设置为"Enable(not secure)"即可.

        */
        var fso = new ActiveXObject("Scripting.FileSystemObject");

        /*
            1. 获取文件路径
                出于安全性的考虑,低版本IE上传文件时屏蔽了真实的本地文件路径,
                以C:\fakepath\**取而代之, 所以默认情况下通过fileEle.value 不能获取到
                文件的真实路径.
                如果想获取真实路径, 有两种方式:
                    1. 通过设置IE的安全设置, 即:
                        Tools(工具) / Internet options(选项) / Security(安全) / Custom level(自定义级别)
                        找到"Include local directory path when uploading files to a server"
                        设置为的"Enable"
                    2. 使用JS获取, 即:
                        fileEle.select().blur();
                        var filePath = document.selection.createRange().text;
        */
        fileEle.select();
        fileEle.blur();
        var filePath = document.selection.createRange().text;

        /*
            FileExists:  判断 文件是否存在
            GetFile: 获取文件对象
        */
        if(fso.FileExists(filePath)){
            fileObj = fso.GetFile(filePath);
        }

        /*
            通过文件对象可以获取文件的基本信息, 如:
        */
        console.info("文件类型:" + fileObj.type);
        console.info("文件名称:" + fileObj.name);
        console.info("文件大小:" + fileObj.size);
    }
</script>

 

展开阅读全文
打赏
2
0 收藏
分享
加载中
HKW
厉害!
2017/07/24 21:33
回复
举报
更多评论
打赏
1 评论
0 收藏
2
分享
返回顶部
顶部