3

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);​

在 jsfiddle.net 上运行示例

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

4

5 回答 5

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();
于 2012-09-11T06:58:53.727 回答
1

如果您制作一个超文本应用程序 (.hta),您将能够创建 ActiveX 对象FileSystemObject,它可以让您访问本地文件系统。

于 2012-09-11T06:56:11.500 回答
1

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

于 2012-09-11T06:56:51.547 回答
0

IE9 是否支持文件 API?

不,它没有

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

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

于 2012-09-11T06:56:01.137 回答
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

于 2017-02-27T00:28:03.873 回答