我有一个input type="file"
按钮。选择文件后,我必须使用javascript读取文件的内容。是否可以使用javascript或ajax读取/获取所选文件的内容?
答案 0 :(得分:9)
你在某种程度上都是错的。有可能的。使用新的File API,您可以在将文件提交到服务器之前读取文件。但它并不适用于所有浏览器。
检查此示例。例如,尝试打开文本文件。
http://development.zeta-two.com/stable/file-api/file.html
编辑:即使问题说明“已上传的文件”,我将其解释为“要上传的文件”。否则它根本没有意义。
答案 1 :(得分:7)
使用AJAX可以读取上传的文件但是使用纯javascript是不可能的,因为javascript在客户端而不是在服务器端工作。
如果你打算使用jquery而不是Ajax,那么调用可能是这样的
$.ajax({
url: "test.html",
context: document.body,
success: function(){
$(this).addClass("done");
}
});
答案 2 :(得分:3)
阅读文件客户端很难:
How to read and write into file using JavaScript
Local file access with javascript
除非您尝试使用本地javascript:
Access Local Files with Local Javascript
或服务器端javascript:
http://en.wikipedia.org/wiki/Server-side_JavaScript
或者,您可以强制用户安装ActiveX对象:
答案 3 :(得分:0)
你不能直接使用javascript。您可以将文件发布到服务器,然后使用ajax来检索内容。
答案 4 :(得分:0)
Javascript旨在无法访问正在运行的计算机。这是流氓javascript无法读取用户的硬盘。 你可以考虑使用iframe。
答案 5 :(得分:0)
在java脚本中无法执行此操作。见Local file access with javascript
我同意上面的DoXicK。您可以先在服务器上发布文件,然后使用Ajax读取它。
答案 6 :(得分:0)
这并非完全不可能
浏览器通常在沙盒环境中运行Javascript(JavaScript Engine)。
因此,您可以在受信任的环境中使用Windows Scripting Host或Internet Explorer并使用FileSystemObject
或使用
或者将文件上传到您的服务器并使用 XMLHttpRequest 对象。(换句话说 - Ajax)
答案 7 :(得分:0)
对于IE,使用FileSystemObject(可在所有Windows系统上找到)。
对于Firefox:
var file = Components.classes["@mozilla.org/file/local;1"].
createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("/home");
请参阅https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO
要查看这些方法以及其他正在使用的方法,请查看TiddlyWiki应用,了解它如何在所有主流浏览器中实现。