使用AJAX从没有Web服务器的本地文件系统读取

时间:2015-12-10 23:54:35

标签: javascript jquery ajax google-chrome

我尝试在HTML文件的脚本标记中执行此操作,只是为了看看我是否可以以某种方式使其工作:

<script>

    var file = '/Users/amills001c/suman/test/output/test1.txt';

    $.get(file);

</script>

我收到了错误,正如所料:

  

XMLHttpRequest无法加载   文件:///Users/amills001c/suman/test/output/test1.txt。   交叉源请求仅支持协议方案:http,   数据,chrome,chrome-extension,https,chrome-extension-resource。

所以我的问题是,有没有办法使用AJAX从本地文件系统请求文件而没有Web服务器?

似乎可能,但听起来我需要做一些配置。这仅适用于本地文件并在本地工作站上运行浏览器。

4 个答案:

答案 0 :(得分:0)

如果您也从文件中运行主页并启用浏览器以使用本地文件,则应该可以执行此操作。在chrome中有一个选项--allow-file-access-from-files允许这样做。

答案 1 :(得分:0)

如果启用了ActiveX,Internet Explorer将加载本地文件。这在Windows 10中有效。

<html>
<head>
<script>
function readZeFile() {
  try {
    var oField = document.getElementById("z_file");
    var oFS = new ActiveXObject("Scripting.FileSystemObject");
    var oStream = oFS.OpenTextFile(oField.value, 1);
    var sContents = oStream.readAll();
    oStream.Close();
    document.getElementById("BoxFileContents").innerHTML = sContents;
  } catch (e) {
    window.alert(e);
  }
}
</script>
</head>
<body>

<input type="file" name="z_file" id="z_file" size="50" />
<input type="button" onclick="readZeFile()" value="Read ze file" />

<pre id="BoxFileContents" style="border: 1px dotted black; height: 10em; width: 500; overflow: scroll; ">
[Nothing loaded]
</pre>

</body>
</html>

Internet Explorer reads local file

答案 2 :(得分:-1)

您说网络服务器因此我不确定您是否在问题中排除本地服务器。但是如果你使用node.js或python等运行localhost服务器,你确实可以使用AJAX加载文件,因为它是相同的源。

不像在Web浏览器中运行index.html那么方便,但这里是一个非常好的托管本地文件的准系统HTTP服务器。 https://www.npmjs.com/package/http-server

答案 3 :(得分:-4)

使用相对路径:

var file = 'suman/test/output/test1.txt';
$.get(file);