【发布时间】:2014-02-02 17:35:49
【问题描述】:
我有一个input type="file" 按钮。选择文件后,我必须使用 javascript 读取文件的内容。是否可以使用 javascript 或 ajax 读取/获取所选文件的内容?
【问题讨论】:
标签: javascript ajax
我有一个input type="file" 按钮。选择文件后,我必须使用 javascript 读取文件的内容。是否可以使用 javascript 或 ajax 读取/获取所选文件的内容?
【问题讨论】:
标签: javascript ajax
在某种程度上,你们都错了。有可能的。使用新的文件 API,您可以在将文件提交到服务器之前读取文件。但它并非在所有浏览器中都可用。
检查这个例子。例如,尝试打开一个文本文件。
http://development.zeta-two.com/stable/file-api/file.html
编辑:即使问题指出“上传的文件”,我也将其解释为“要上传的文件”。否则根本没有意义。
【讨论】:
使用 AJAX 可以读取上传的文件,但使用纯 javascript 则不可能,因为 javascript 在客户端而不是服务器端工作。
如果你打算使用 jquery 而不是 Ajax 调用可能是这样的
$.ajax({
url: "test.html",
context: document.body,
success: function(){
$(this).addClass("done");
}
});
【讨论】:
客户端读取文件很困难:
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 对象:
【讨论】:
你不能直接使用 javascript 来做到这一点。您可以将文件发布到服务器,然后使用 ajax 检索内容。
【讨论】:
Javascript 设计为无法访问运行它的计算机。这是为了让流氓 javascript 无法读取用户的硬盘。 不过,您可以考虑使用 iframe。
【讨论】:
在 java 脚本中是不可能的。见Local file access with javascript
我同意上面的 DoXicK。您可以先将文件发布到服务器上,然后您可以使用 Ajax 读取它。
【讨论】:
这并非完全不可能
浏览器通常在沙盒环境中运行 Javascript(JavaScript 引擎)。
因此您可以在受信任的环境中使用 Windows Scripting Host 或 Internet Explorer,并使用FileSystemObject
或使用
或将文件上传到您的服务器并使用 XMLHttpRequest 对象。(换句话说 - Ajax)
【讨论】:
对于 IE,使用 FileSystemObject(在所有 Windows 系统上都可以找到)。
对于火狐:
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 app,了解它在所有主要浏览器中的表现。
【讨论】: