是否有可能在JavaScript中读取IE中的本地文件?

时间:2012-09-11 06:53:36

标签: javascript html5 internet-explorer internet-explorer-9

FileReader允许在Chrome中读取本地文件。

function readMultipleFiles(evt) {
    var files = evt.target.files;

    if (files) {
        for (var i = 0, f; f = files[i]; i++) {
            var r = new FileReader();
            r.onload = (function (f) {
                return function (e) {
                    var contents = e.target.result;
                    document.getElementById("output").innerHTML = contents;
                };
            })(f);
            r.readAsText(f);
        }
    } else {
        alert("Failed to load files");
    }
}
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);​

Run example on jsfiddle.net

但是此示例在Internet Explorer 9中不起作用。
IE9是否支持File API?
如果是 - 我应该怎么做才能读取IE9中的本地文件?

5 个答案:

答案 0 :(得分:3)

您可以使用ActiveX' FileSystemObject.

var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("This is a test.");
a.Close();

答案 1 :(得分:1)

如果您创建超文本应用程序(.hta),您将能够创建ActiveX对象FileSystemObject,这将允许您访问本地文件系统。

答案 2 :(得分:1)

一般没有。读取本地文件是一个严重的安全违规。

答案 3 :(得分:0)

  

IE9是否支持File API?

No, it doesn't

  

如果是 - 我该怎么做才能在IE9中读取本地文件?

你的意思是如果没有?如果是这样,那么您可以使用ActiveX或只是告知用户他的浏览器不支持您网站的这一功能,并允许他将文件上传到服务器。

答案 4 :(得分:0)

似乎FileSystemObject就像一个隐藏的怪物......

var fso, file, fileName = '/file.txt', fileContents = '';
if (fileName) {
    fso = new ActiveXObject('Scripting.FileSystemObject');
    // don't worry about 'camelCase' typing, works both
    if (fso.fileExists(fileName)) {
        file = fso.openTextFile(fileName, 1);
        fileContents = file.readAll();
        // or loop over lines
        // while (!file.atEndOfStream) {
        //     fileContents += file.readLine();
        // }
        file.close();
    }
}

更多信息:https://msdn.microsoft.com/en-us/library/314cz14s(v=vs.85).aspx