HTML 4相当于HTML 5的FileReader?

Jon*_*tus 5 javascript cross-browser

我有一个网页,需要能够从运行浏览器的本地计算机将文件加载到DOM中.我发现使用HTML 5 File API很容易做到这一点.

我可以这样做:

var reader = new FileReader();  
reader.onload = function (fileContents) { ... load contents to a div ... }
reader.readAsText(f) //where f is an HTML5 File object
Run Code Online (Sandbox Code Playgroud)

令人讨厌的是,我需要在IE7中工作,还有一些早期版本的Firefox不支持API.有没有简单的方法可以在旧浏览器中将本地文件加载到DOM中?

非常感谢!

dri*_*iis 6

不,你不能在旧浏览器中这样做.FileReader(真正的任何文件系统访问)是新的HTML5功能,旧版浏览器不支持.

您在旧版浏览器中的最佳选择是:

  1. 在客户端运行并具有本地文件系统访问权限的Silverlight,Flash或Java应用程序(或类似应用程序).
  2. 让用户使用<input type="file">元素上传文件,并在服务器端进行处理.


Jon*_*tus 5

除了这里的其他答案之外,似乎没有一致的方法来为旧浏览器执行此客户端(除了Flash).

但是对于IE7/8,我已经设法使用ActiveX一起破解了一些东西.

var filePath = f:\oo.txt;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var textStream = fso.OpenTextFile(filePath);
var fileData = file.ReadAll();
Run Code Online (Sandbox Code Playgroud)

然后我可以在上面的问题中将它传递给与reader.onload相同的功能.显然这是一个糟糕的,hacky解决方案,并且可能被某些安全策略阻止 - 但它至少对IE7有用!