【问题标题】:Saving a JSON object as a file in AngularJS在 AngularJS 中将 JSON 对象保存为文件
【发布时间】:2018-04-18 13:11:32
【问题描述】:

我想知道是否有任何方法可以将 JSON 对象另存为项目目录中的 .json 文件。我有一个表单,每次用户填写它时,我都希望附加 JSON 文件。我目前只使用 AngularJS。

【问题讨论】:

  • JSON 是一个字符串......不是一个对象......所以,知道这一点应该更容易
  • 如果您想以编程方式将文件写入光盘(而不是下载),出于安全原因,这几乎是不可能的。见stackoverflow.com/questions/21012580/…
  • 简单地说,您不能仅使用JavaScript 在服务器端保存文件。你还需要一些服务器端语言,比如PHP
  • ...或 Javascript。但服务器端。

标签: javascript angularjs json


【解决方案1】:

AngularJS 只是 JavaScript,因此请使用任何可以让您使用 JS 保存文件的方法(最好使用 PHP 之类的后端)。其中一种方法是FileSaver.js(使用 HTML5 功能)。

这是一个工作演示:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.myJSON = {
    "A": "B"
  };

  $scope.saveJSON = function(json) {
    var jsonse = JSON.stringify(json);
    var blob = new Blob([jsonse], {
      type: "application/json"
    });
    $scope.filename = $scope.filename || "my_json";
    saveAs(blob, $scope.filename + ".json");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">

  Some JSON:
  <pre>
    {{myJSON | json}}
  </pre>
  File Name: <input type="text" ng-model="filename" /><br>
  <button ng-click="saveJSON(myJSON)">Save</button>

</div>

或者您可以使用 PHP 向后端发送请求

$http.post("createJSON.php",json).then((res)=>{...}, (err)=>{...})

并收到:

<?php
$dataReceived = file_get_contents('php://input');
$myFile = json_decode( $dataReceived );

$path = $myFile->path; // path to store it in
$name = $myFile->name; // file name
$JSON = $myFile->json; // content

# Storing file
$file = fopen($path.$name.".json", 'w');
fwrite($file, $JSON);
fclose($file);
?>

【讨论】:

  • 我试过你的sn-p,它没有将文件保存到磁盘,它正在下载一个JSON文件。不确定这就是 OP 想要的
  • @JeremyThille 问题是“将 JSON 对象另存为 .json 文件”。我的代码就是这样做的。
  • 它不做的是each time a user fills it, I want the JSON file to be appended in the project directory
  • @JeremyThille 不在 问题的 范围内。为此,这可以被标记为“太宽泛”。我的回答只是一个如何保存文件的示例,请随意使用其他规范进行扩展
  • 鉴于我引用了原始问题,我看不出它是如何超出问题范围的。
【解决方案2】:

您不能仅使用 javascript 将文件保存到磁盘。也许你真的需要 nodejs,并使用 fs 模块。 Is it possible to write data to file using only JavaScript?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 2016-08-15
    • 1970-01-01
    • 2015-05-11
    • 2013-12-30
    • 2017-07-11
    • 2021-04-24
    • 2017-07-23
    相关资源
    最近更新 更多