乐鱼app成为大巴黎赞助商

乐鱼app成为大巴黎赞助商开展防溺水教育活动 全力筑牢生命安全防线             法治教育进校园 护航青春助成长             乐鱼app成为大巴黎赞助商举行辩论赛基础知识讲座暨班级小组辩论展示活动             弃旧“兔”新新学期,携手新年再出发 ——河池市乐鱼app成为大巴黎赞助商召开新学期班主任工作会议             清华大学经管学院寒假实践队到乐鱼app成为大巴黎赞助商开展调研活动             学习党的二十大,提升课堂教学技能,办人民满意的教育             心怀感恩 砥砺前行 奋进超越 决胜高考——乐鱼app成为大巴黎赞助商2023届决战高考200天誓师大会             一飞冲天,放飞科技梦——乐鱼app成为大巴黎赞助商举行第三届水火箭比赛             筑梦新华章,青春正飞扬——乐鱼app成为大巴黎赞助商举行第43届校运会田径运动会开幕式             河池市乐鱼app成为大巴黎赞助商党史学习活动            

DoraCMS

您现在的位置是:首页>文档内容页

文档详情

乐鱼app成为大巴黎赞助商:第7天 Post方法与上传——解析分类数据

doramart 2023-03-22 13:02:44 技术文档226698
表单的字段有两种,一个是表单字段,一个是二进制的文件。而这两种格式的不同在于信息头,下面是个信息头的例子: 表单字段信息头

乐鱼app成为大巴黎赞助商:解析分类数据

表单的字段有两种,一个是表单字段,一个是二进制的文件。而这两种格式的不同在于信息头,下面是个信息头的例子:

表单字段信息头

Content-Disposition: form-data; name="title" \r\n\r\n

二进制文件信息头

Content-Disposition: form-data; name="img"; filename="favicon2.ico" \r\n
Content-Type: image/x-icon \r\n\r\n

解析过程要分别处理,最终要把表单字段的信息,解析后放入 req.body 。把上传文件的信息,保存在req.files中。下面是解析代码:

// 头信息和体信息的之间分割字符串
var RN = "\r\n\r\n";

var files = {};   // 储存解析出的上传文件的信息

var bodys = {};   // 储存表单字段的信息

fields.forEach(function(field){

    var index  = field.indexOf(RN);

    // 解析出头信息块
    var header = field.substring(0,index);

    // 从头信息中解析出表单字段的名称,也就是表单的name属性值。
    /name=\"(.*?)\"/g.test(header);
    var fieldName = RegExp.$1;

    // 判断是上传的文件,还是一般的表单字段。
    var isFile = /filename/g.test(header);

    // 解析出数据体
    var body = field.substring(index+RN.length);
        body = body.substring(0,body.length - RN.length/2);

    if(isFile){
        files[fieldName] = new Buffer(body);
    }else{
        bodys[fieldName] = body;
    }

})

代码中把二进制上传文件信息保存到files里,一般的表单字段信息保存到bodys中。通过 new Buffer(字符串) 的方式转换成二进制对象。

下一节,要把这些代码整合一下,集成到post.js中间件里。

文章评论

取消回复
登录 参与评论

评论列表(

乐鱼app成为大巴黎赞助商