帮个小忙?
我试图将纯JSON写入到我的项目中的一个文件中,我的项目树看起来像这样:
src
->app
-->components
--->people.component.ts
--->(other irrelevant components)
-->services
--->people.service.ts
-->data
--->JSON.json
->(other irrelevant src files)
我的people.component.ts
中的代码只是用来调用和订阅我的people.service.ts
中的函数,传递newPerson
属性,该属性使用angular2从DOM进行数据绑定Magic;这是name.service.ts
里面的函数:
public addPerson(newPerson) {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
return this.http.post('app/data/PEOPLE.json', newPerson, { header: headers })
.map(res => res.json())
}
我的目标是写(如果需要替换)newPerson
属性(或整个文件)在PEOPLE. json
.
我也尝试过put
方法,它的错误略有不同,但我没有找到这两种方法的解决方案。
我清楚地知道,我试图输入人员的数据的格式/类型不是错误。json文件。
不幸的是,您不能使用客户端(浏览器)JavaScript直接将或发布到本地文件系统上的文件。
考虑构建一个简单的服务器来处理POST请求。如果您对JavaScript最满意,请尝试使用Node.js
// server.js
'use strict'
const bodyParser = require('body-parser');
const express = require('express');
const fs = require('fs');
const app = express()
app.use(bodyParser.json());
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://localhost:8000');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.header('Access-Control-Allow-Methods', 'POST');
next();
});
app.post('/', (req, res) => {
console.log('Received request');
fs.writeFile('json.json', JSON.stringify(req.body), (err) => {
if (err) throw err;
console.log('File written to JSON.json');
res.send('File written to JSON.json')
})
});
app.listen(3000, ()=>{
console.log('Listening on port 3000. Post a file to http://localhost:3000 to save to /JSON.json');
});
您不能从浏览器写入文件。期间。即使这样的行动是可能的,它将存储在用户端,而不是您的服务器。如果您的任务确实是在用户端编写一些东西,请参考localstore留档(或几个其他API实现)。但是,如果您打算在浏览器之外出于某种目的使用该文件,这将是一项非同小可的任务。
若你们想在服务器上保存文件,那个么你们需要在后端处理它。