我试图创建一个PUT方法来更新obj.json文件并在上传后显示其内容。我得到一个空对象而没有内容?
function upload(response, request) {
console.log("Request handler 'upload' was called.");
var form = new formidable.IncomingForm();
console.log("about to parse");
form.parse(request, function(error, fields, files){
response.writeHead(200, {'content-type': 'application/json'});
response.write('received upload:\n\n');
response.end(util.inspect({fields: fields, files: files}));
});
form.on('file', function(field, file) {
console.log(file);
if (file.type == 'application/json') {
jsonObject = JSON.parse(fs.readFileSync(file.path, 'utf8'));
console.log(jsonObject);
} else { console.log('wrong file');}
});
}
function update(response, request) {
console.log("Request handler 'update' was called.");
response.writeHead(200, {"Content-Type": "application/json"});
var form = new formidable.IncomingForm();
console.log("about to parse");
form.parse(request, function(error, fields, files){
response.writeHead(200, {'content-type': 'application/json'});
response.write('ready to update:\n\n');
response.end(util.inspect({fields: fields, files: files}));
});
form.on('file', function(field, file) {
console.log(file);
if (file.type == 'application/json') {
JSON.parse(fs.writeFileSync(file.path, JSON.stringify('"test":"Okay"'), 'utf8'));
console.log(jsonObject);
} else { console.log('wrong file');}
});
}
我能够上传文件并访问json,但我现在无法更改文件的内容。有关如何做到这一点的任何想法?还有,删除方法是一样的吗?
答案 0 :(得分:1)
你在这里问了2个问题,因此我给你2个单独的答案。更新JSON文件就像其他任何事情一样:
var fs = require('fs');
var filename = '/tmp/content.json';
var file = fs.readFileSync(filename);
var json = JSON.parse(file);
//update the object
json.newValue = 'testValue';
//update the file with new object
fs.writeFileSync(filename, JSON.stringify(json));
答案 1 :(得分:0)
https://www.npmjs.com/package/multer
这是一个很棒的文件上传功能库。当您执行POST文件时,必须使用Content-type:' multipart / form-data'提交。然后你可以这样访问JSON文件:
req.files.<nameOfFileInput>
我从未使用过强大的东西,但我认为它的工作方式相同,甚至可能在幕后使用。我的猜测是你的表格没有enctype =&#34; multipart / form-data&#34;设置这就是为什么你的文件没有被发送到服务器。