2015-10-13 90 views
0

有快递这个功能,一个文件夹一个JSON文件保存到服务器快递(节点)

var savingtheJson=function(path, jsonObject, callback){ 
    jsonfile.writeFile(file2, jsonO, callback); 
} 

我会想知道我怎么能访问写一个JSON文件/读取从浏览器这个文件一旦被保存。

如果我这样做:

savingtheJson('/json/myfile.json', jsonObj, function(){ 
      console.log("done it!"); 
     }); 

当我去到浏览器和I型:

http://localhost:8080/json/myfile.json 

当然,我得到一个错误,从快车 “不能得到......” 原因我认为是试图解决它像一个特定的请求

我该如何存储此文件到此目标声明的静态文件夹 (app.use(express.static(__dirname + '/public'))?

如何保存一次该文件?

+0

静态服务目录在'/ public'中,就像你提到的一样。但IMO应该在您的Web服务中提供一个新的端点来检索文件。 –

+0

你的意思是创建和读取文件的应用程序端点,就像在这个例子中使用这种类型的os函数一样? [阅读json文件](http://stackoverflow.com/questions/12703098/how-to-get-a-json-file-in-express-js-and-display-in-view) –

+1

你肯定会不要像在服务器应用程序中那样读取文件。我打算创建一个新的路由(例如'/ json /:myfile')并在GET上异步读取文件。 –

回答

6

首先,您需要定义哪个文件夹将公开显示,以便您可以将json文件保存在其中。

您可以使用内置中间件express.static达到此目的。

在下面的例子中,我创建了一个称为端点其中/users?name=wilson&age=32为了抢用户的信息接收查询数据为的,那么你可以将它保存为名为person.json文件年龄。

因此,在您使用上述端点后,您将能够成功使用类似http://localhost:4040/person.json的文件。

var express = require('express'); 
var app = express(); 
var port = 4040; 
var fs = require('fs'); 

app.use(express.static('public')); 

app.get('/users', function(req, res) { 
    var name = req.query.name; 
    var age = req.query.age; 

    var person = { 
    name: name, 
    age: age 
    }; 

    savePersonToPublicFolder(person, function(err) { 
    if (err) { 
     res.status(404).send('User not saved'); 
     return; 
    } 

    res.send('User saved'); 
    }); 
}); 

function savePersonToPublicFolder(person, callback) { 
    fs.writeFile('./public/person.json', JSON.stringify(person), callback); 
} 

app.listen(port, function() { 
    console.log('server up and running at port: %s', port); 
}); 
相关问题