您如何使用 HTML 在客户端计算机上以纯文本格式打开文件(即 .cpp、.txt 甚至 .html 文件)?我想将用户机器中的纯文本文件提取到 HTML<textarea>
中。仅供参考,我正在使用 hiccup、clojure 和 webnoir 来生成 HTML 和服务器,所以这些都是用于帮助该过程的所有其他选项。
问问题
703 次
2 回答
1
您有两个主要选择:将文件上传到您的服务器以作为 HTML 内容提供,或者使用 HTML 5 的File API。这个问题还涉及更多选项(如小程序、使用 File API 启用拖放等)
上传文件
- 让用户
<input type="file" .../>
在一页上选择文件 - 将文件内容上传到您的服务器。
- 重定向到不同的页面以显示文件内容
- 在该页面的文本区域中提供上传文件的内容。
优点:
- 这种方法非常简单明了。
- 您可以扫描文件并在服务器上进行一些繁重的处理
缺点:
- 访问服务器可能很耗时。
HTML 5 解决方案
- 让用户使用
<input type="file" .../>
- 不要发布内容,而是使用 JavaScript 将文件加载到 HTML 5 本地存储中(请参见下面的代码)
- 使用 JavaScript 将文件的内容插入到您的 DOM 中。
优点:
- 无需访问服务器(更快)
缺点:
- 任何和所有验证/处理都必须在 JavaScript 中的客户端完成。这会使您的客户端变得更重,并允许用户查看/修改您的代码(您可能不需要关心)。
我从这个站点抓取了这个代码片段,其中有一些使用 File API 的好例子:
function onInitFs(fs) {
fs.root.getFile('log.txt', {}, function(fileEntry) {
// Get a File object representing the file,
// then use FileReader to read its contents.
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
// Do something with the contents, which are stored in 'this.result'
};
reader.readAsText(file);
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
于 2012-06-29T18:02:57.837 回答
0
快速而肮脏的选择是简单的slurp
:
(slurp "mycode.cpp")
于 2012-06-28T21:49:51.213 回答