获取用户post提交的数据分多次提交,因为post提交数据的时候,数据量可能比较大,会要影响服务器中获取用户所以、提交的所有数据,就必须监听request事件。那么,什么时候才表示浏览器把所有数据提交完,这时候就是request事件触发的时候。

1.读取之前的新闻内容data.json

fs.readFile(path.join(__dirname,'data','data.json'),'utf8',function(err,data){
        //因为第一次访问网站,data.json文件本身就不存在,所以会有异常
        //这种错误,我们不认为是网站出错了,所以不需要抛出异常
        if(err&&err.code!=='ENOENT'){
            throw err;
        }
        //如果data没有读取到,则data为空,转换为数组
        var list=JSON.parse(data||'[]');

    });

2.监听request的对象的时候u

fs.readFile(path.join(__dirname,'data','data.json'),'utf8',function(err,data){

        if(err&&err.code!=='ENOENT'){
            throw err;
        }

        var list=JSON.parse(data||'[]');

        //2.获取用户post提交的数据分多次提交

        //那么,什么时候才表示浏览器把所有数据提交完,这时候就是request事件触发的时候
        //监听reqyest的对象的时候
        //声明一个数组,用来保存用户每次提交的数据
        var array=[];
        req.on('data',function(chunk){
            //此处的chunk参数,就是浏览器本次提交过来的一部分数据
            //chunk的数据类型是buffer
            array.push(chunk);

        });

    });

2.当end事件被触发时,数据提交完成

fs.readFile(path.join(__dirname,'data','data.json'),'utf8',function(err,data){
        if(err&&err.code!=='ENOENT'){
            throw err;
        }

        var list=JSON.parse(data||'[]');

        var array=[];
        req.on('data',function(chunk){
            array.push(chunk);

        });

        //监听request对象的end事件
        //当end事件被触发时,数据提交完成
        req.on('end',function(){
            //这个事件中将array数组中的每个buffer汇总起来成为一个buffer,在将buffer转化为字符串
            //然后字符串转化为json对象
            //不能直接用JSON.parse,因为现在字符串是这样的title=fff&url=ssss&text=isjsix
            var postBody=Buffer.concat(array);
            postBody=postBody.toString('utf8');

            postBody=querystring.parse(postBody);

            //将用户的push提交到新闻push到List中
            list.push(postBody);
            fs.writeFile(path.join(__dirname,'data','data.json'),JSON.stringify(list),function(err){
        if(err){
            throw err;
        }
        console.log('ok');
    });

 

node——post提交新闻内容的更多相关文章

  1. node学习笔记(二)(ajax方式向node后台提交数据)

    通过ajax向node后台提交数据过程(附手写前后台代码),并总结post与get的区别 POST 前台代码 //CSS简单给点样式 <style> form{ width: 200px; ...

  2. Atitit   发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化

    Atitit   发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化 大段内容务必要替换转义换行符号1 提交务必使用utf编码,否则解码后的可能缺失,是web serv ...

  3. android 自定义无限循环播放的viewPager。轮播ViewPager。实现循环播放 广告,主题内容,活动,新闻内容时。

    前言 实际项目需要一个 播放广告的控件,可能有多个广告图片.每个一段时间更换该图片.简单来说,就是一个 “循环播放图片”的控件. 间隔时间更换图片 一般来说,图片切换时需要有动画效果 需要支持手势,用 ...

  4. Node.js读取文件内容

    原文链接:http://blog.csdn.net/zk437092645/article/details/9231787 Node.js读取文件内容包括同步和异步两种方式. 1.同步读取,调用的是r ...

  5. Fragment在Activity中跳转,实现类似新闻标题跳转新闻内容功能

    1.准备的工作,新闻数据类,新闻数据适配器,适配器的布局: News.java package com.example.zps.fourfragmentbestpractice; /** * Crea ...

  6. iOS界面-仿网易新闻左侧抽屉式交互 续(添加新闻内容页和评论页手势)

     本文转载至  http://blog.csdn.net/totogo2010/article/details/8637430       1.介绍 有的博友看了上篇博文iOS界面-仿网易新闻左侧抽屉 ...

  7. git push 报504 (因提交文件内容过大而失败的解决方案)

    Enumerating objects: 60, done. Counting objects: 100% (60/60), done. Delta compression using up to 4 ...

  8. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  9. 编写HTML表单提交并接受数据信息(获取用户通过表单提交的内容)

    MyInfoForm.java package com.fxl; import java.io.IOException; import java.io.PrintWriter; import java ...

随机推荐

  1. Python笔记17---------魔法方法

    魔法方法也为特殊方法,即用两个下划线形成的(__方法__).自己定义的方法最好不要采用这种方式,因为这些方法会在一些特殊的情况下直接被调用. 1.第一个魔法方法:类中常用的__init__()方法:相 ...

  2. GDI 直线和折线(6)

    设置开始点 MoveToEx 函数用于移动画笔到指定的位置: BOOL MoveToEx( HDC hdc, // 设备环境句柄 int X, // 要移动到的 x 坐标 int Y, // 要移动到 ...

  3. Asp 6种页面转向方法

    asp.net 页面转向方法其实就是两种 服务器端转向和客户端转向 客户端转向实质上是指由浏览器直接向服务器端重新发送一个请求. 而服务器端转向是指服务器内部进行页面的跳转. 服务器端转向和客户端转向 ...

  4. WEBGL学习【十四】利用HUD技术在网页上方显示三维物体

    关键点: <!--实现原理:要保证这两个canvas相互重叠;z-index表示了两个画布的上下层关系--> <!--是WEBGL的三维图形Canvas(主要用于绘制三维场景)--& ...

  5. bitset骚操作

    bitset的用途挺多的,是一个比较骚的常数优化 一.很多位数的二进制数 poj 2443 http://poj.org/problem?id=2443 直接开个1万位的二进制数,求交就行了. 有关集 ...

  6. 【hihocoder 1312】搜索三·启发式搜索(启发式搜索写法)

    [题目链接]:http://hihocoder.com/problemset/problem/1312?sid=1092363 [题意] [题解] 定义一个A*函数 f = step+val 这里的v ...

  7. 【codeforces 803C】Maximal GCD

    [题目链接]:http://codeforces.com/contest/803/problem/C [题意] 给你一个数字n;一个数字k; 让你找一个长度为k的序列; 要求这个长度为k的序列的所有数 ...

  8. Mysql学习总结(36)——Mysql查询优化

    从事前端开发的都知道,页面显示的数据一定要及时的呈现,否则会影响用户体现.那么导致页面加载数据慢或者显示滞后的原因又是什么呢? 拿自己之前做项目经历给大家讲讲吧,之前做后台,当时的项目实时性都非常高, ...

  9. C#中的Attribute Property区别

    Attribute 一般译作"特性",Property 仍然译为"属性". Attribute 是一种可由用户自由定义的修饰符(Modifier),可以用来修饰 ...

  10. LCA【模板】

    #include <algorithm> #include <cstdio> #include <vector> #define N 10015 using nam ...