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中?
非常感谢!
不,你不能在旧浏览器中这样做.FileReader(真正的任何文件系统访问)是新的HTML5功能,旧版浏览器不支持.
您在旧版浏览器中的最佳选择是:
<input type="file">元素上传文件,并在服务器端进行处理.除了这里的其他答案之外,似乎没有一致的方法来为旧浏览器执行此客户端(除了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有用!