【问题标题】:Reading/Writing files in JavaScript用 JavaScript 读/写文件
【发布时间】:2012-02-08 04:30:01
【问题描述】:

我正在尝试制作一个可以读取服务器端 CSV 文件并以简洁、可浏览的格式显示的网络应用程序。问题是我想用裸 JS/CSS3/HTML5 来做。 有没有办法用裸 JS/CSS3/HTML5 读写服务器端文件?我显然希望它独立于操作系统/浏览器。

我尝试过的


我已经尝试实现了一些我在网上找到的代码(一些网站引用了它)。以下是我在测试时尝试过的:(我只想让测试在网页中显示网页本身的内容)

scriptTest.htm:

<html>
<head>
<script type="text/javascript" src="readIt.JS"></script>
</head>
<body>
<button onclick="return readIt();">Show the code of the page</button>
<div id="readItOutput"></div>
</body>
</html>

readIt.JS:

function readIt()
{
    file = fopen(getScriptPath("scriptTest.htm"), 0);
    file_length = flength(file);
    content = fread(file, file_length);
    document.getElementById("readIt").innerText = content;
}

但是,每当我在 Opera 和 Chrome 下运行它时,它都会抛出以下内容:

歌剧:

Uncaught exception: ReferenceError: Undefined variable: fopen
Error thrown at line 3, column 1 in readIt() in http://s.supuhstar.operaunite.com/s/content/JS/readIt.JS:
    file = fopen(getScriptPath("scriptTest.htm"), 0);
called from line 1, column 0 in <anonymous function>(event) in http://s.supuhstar.operaunite.com/s/content/JS/scripttest.htm:
    return readIt();

铬:

Uncaught ReferenceError: getScriptPath is not defined
readItreadIt.JS:3
(anonymous function)scripttest.htm:6
onclick

【问题讨论】:

  • 您是否考虑过使用 XHR ("Ajax") 拉取所需文件,然后解析逗号和行?您不能使用此方法直接编写服务器文件(您必须通过 XHR 请求服务器端脚本为您执行此操作),但您可以通过这种方式“读取”文件并解析其内容。
  • 马特完全正确。您可以使用 AJAX 获取文件内容,然后根据需要进行格式化。
  • @Matt XHR 的哪一部分是“naked JS/CSS3/HTML5”?
  • @Supuhstar 几乎全部:developer.mozilla.org/en/XMLHttpRequest

标签: javascript file file-io fopen fread


【解决方案1】:

如果您想从服务器编辑一些文件,您需要使用 XHR 对象将文件下载到客户端,然后再次使用 XHR 对象将修改后的数据发送回服务器,您还需要服务器上的某种 API 来发送/接收数据。

【讨论】:

  • XHR 的哪一部分是“naked JS/CSS3/HTML5”?
  • @Supuhstar 请参阅我对上面您的 OP 的评论。 XHR 是所有流行的现代浏览器的 Javascript 引擎的标准实现。如果允许 Javascript 读取和写入本地文件系统或远程服务器的文件系统,甚至写入与请求来源相同的域中的文件,那么 Javascript 将是高度违规的。这就是为什么必须将这些任务委托给有权运行的本地脚本的原因。在客户端机器上,你基本上不会得到它。时期。在您的服务器上,您可以授权由 XHR 请求调用的脚本或程序执行写入操作。
  • @Supuhstar 整个 XHR 是“裸 JS”,因为您可以在任何浏览器中获取它而无需任何额外的库
  • 顺便看看 Node.js,它稍微模糊了客户端和服务器端之间的界限
【解决方案2】:

出于安全原因,不能单独使用 JS/CSS3/HTML5 完成文件写入,否则人们可以在 FireBug 中修改 js 并写入文件。 您需要使用服务器端 JS 或 PHP 等语言创建某种 API 来处理权限、文件名、文件位置等……

至于阅读,您的文件必须是可公开访问的,否则您需要使用 PHP 等服务器端语言来提供它。

【讨论】:

  • 刚刚澄清了我的答案 - 如果文件是可公开访问的,则只能使用 JS 进行读取 - 即可以在没有 javascript 的情况下在浏览器中访问。
  • 该文件当然可以公开访问。
猜你喜欢
  • 2010-10-09
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 2018-12-22
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多