0

您如何使用 HTML 在客户端计算机上以纯文本格式打开文件(即 .cpp、.txt 甚至 .html 文件)?我想将用户机器中的纯文本文件提取到 HTML<textarea>中。仅供参考,我正在使用 hiccup、clojure 和 webnoir 来生成 HTML 和服务器,所以这些都是用于帮助该过程的所有其他选项。

4

2 回答 2

1

您有两个主要选择:将文件上传到您的服务器以作为 HTML 内容提供,或者使用 HTML 5 的File API这个问题还涉及更多选项(如小程序、使用 File API 启用拖放等)


上传文件

  1. 让用户<input type="file" .../>在一页上选择文件
  2. 将文件内容上传到您的服务器。
  3. 重定向到不同的页面以显示文件内容
  4. 在该页面的文本区域中提供上传文件的内容。

优点

  • 这种方法非常简单明了。
  • 您可以扫描文件并在服务器上进行一些繁重的处理

缺点

  • 访问服务器可能很耗时。

HTML 5 解决方案

  1. 让用户使用<input type="file" .../>
  2. 不要发布内容,而是使用 JavaScript 将文件加载到 HTML 5 本地存储中(请参见下面的代码)
  3. 使用 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 回答