ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ //加载querystring模块 var querystring =require('querystring'); else if(req.url==='/add'&&req.method==='post'){ //表示post方法提交一条新闻 //1.读取data.json文件中的数据 fs.readFile(path.join(__dirname,'data','data.json'),'utf8',function(err,data){ if(err && err.code !=="ENOENT"){ throw err; } var arr=JSON.parse(data || '[]'); //2.获取用户 post 提交的数据 //post提交数据的时候数据量比较大,所以会分多次提交,每次提交一部分数据,此时要想在服务器中获取用户提交的所有数据,必须监听request事件的data事件 //当request对象的end事件被触发的时候表示浏览器把所有的数据都提交到服务器了 //监听request的对象的data事件和end事件代码如下: //声明一个数组,用来保存用户每次提交过来的数据 var list=[]; req.on('data',function(chunk){ //此处的 春款参数,就是浏览器本次提交过来的一部分数据 //chunk的数据类型是buffer list.push(chunk); }); req.on('end',function(){ //在这个事件中只要把array中的所有数据汇总起来就好了 //把list的每个buffer对象,集合起来转换为一个buffer对象 //title=vvvvv&url=http%3A%2F%2Flocalhost%3A8888%2Fsubmit&text=vvvvvvvvvvvv var postBody=Buffer.concat(list); postBody=postBody.toString('utf8');//buffer对象转化为字符串 //把post请求的查询字符串,转换为一个json对象 postBody=querystring.parse(postBody); //console.log(postBody); //将用户提交的新闻push到arr数组中 arr.push(postBody); //将新的arr数组,在写入到data.json文件中 fs.writeFile(path.join(__dirname,'data','data.json'),JSON.stringify(arr),function(err){ if(err){ throw err; } console.log('ok'); //3.跳转到新闻列表页 res.writeHead(302,'Found',{'Location':'/'}) res.end(); }); }); }); //2.将读取到的数据转化为arr数组 //3.向arr数组中push一条新闻数据 //4.把arr数组转换为字符串重新写入data.json文件中 //5.重定向 } ~~~ ![](https://box.kancloud.cn/b8b2846503610c705fa7ca479274dc26_484x188.png)