IE9 获取File文件对象

<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>

 

转载于:https://my.oschina.net/tianshl/blog/860163

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值