【问题标题】:Write to a local JSON file javascript写入本地 JSON 文件 javascript
【发布时间】:2018-10-25 17:56:53
【问题描述】:

我正在尝试使用 javascript 写入我的本地 JSON 文件,我从我的 HTML 中获取它,对其进行更改并想将其写回。我找到了如何从 here 读取它,但没有找到如何将它写回 json 文件。

注意:我想在没有 Node.js 的情况下这样做,'fs' 将无济于事..

我获取 JSON 文件的代码:

<script type="text/javascript" src="data.json></script>
<script type="text/javascript" src="javascrip.js"></script>

var mydata = JSON.parse(data);

然后我更改了“名称”的值,例如。

mydata["name"] = "NewName";

然后我想把它发回json文件,更新它。

我真的没有找到任何代码。

【问题讨论】:

  • 你怎么样了?你到底想把它送到哪里?您用来获取的代码和您尝试过的代码在哪里?
  • 编辑问题

标签: javascript html json


【解决方案1】:

虽然由于安全限制,您无法直接写入文件系统,但您可以触发保存对话框来请求用户保存文件。我使用的这个功能适用于所有主要浏览器的最新版本。

function download(data, filename) {
    // data is the string type, that contains the contents of the file.
    // filename is the default file name, some browsers allow the user to change this during the save dialog.

    // Note that we use octet/stream as the mimetype
    // this is to prevent some browsers from displaying the 
    // contents in another browser tab instead of downloading the file
    var blob = new Blob([data], {type:'octet/stream'});

    //IE 10+
    if (window.navigator.msSaveBlob) {
        window.navigator.msSaveBlob(blob, filename);
    }
    else {
        //Everything else
        var url = window.URL.createObjectURL(blob);
        var a = document.createElement('a');
        document.body.appendChild(a);
        a.href = url;
        a.download = filename;

        setTimeout(() => {
            //setTimeout hack is required for older versions of Safari

            a.click();

            //Cleanup
            window.URL.revokeObjectURL(url);
            document.body.removeChild(a);
        }, 1);
    }
}

还值得一提的是,HTML5 规范有一个download 属性,但目前 IE 不支持它。

【讨论】:

    【解决方案2】:

    正如 ArtemSky 所说,您无法写入本地文件系统。完成您想要做的事情的方法是使用可以写入其本地文件系统或数据库或其他任何内容的服务器。

    因此,您可能希望将数据存储在某个地方,可以是服务器上的本地文件、云端等,也可以是某种数据库。然后,您将在服务器上设置一个 API,您可以远程调用该 API 以通过 XMLHttpRequest(XHR) 获取数据

    然后您将创建另一个 API 方法,您可以使用该方法将数据发回,然后使用更新/新数据调用该方法。

    写入本地文件系统是一个安全问题,因为如果任何人可以编写代码,否则可能会覆盖您的系统文件。阻止写入本地文件系统的能力是确保网络安全的唯一方法。

    【讨论】:

    【解决方案3】:

    由于浏览器的安全限制,您无法写入文件系统。

    你只能这样做 - https://stackoverflow.com/a/30800715/6149665

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-19
      • 2021-08-11
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多