尝试在Node.js中对JSON文件进行简单的PUT请求

时间:2015-02-16 19:24:06

标签: javascript json node.js

我试图创建一个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,但我现在无法更改文件的内容。有关如何做到这一点的任何想法?还有,删除方法是一样的吗?

2 个答案:

答案 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;设置这就是为什么你的文件没有被发送到服务器。