欢迎您访问宜州一中 您可以登录 或注册
 
收藏本站 简繁转换
一方天地育桃李,三尺讲台竞风采             宜州区一中在宜州博物馆举行“人杰地灵读宜州”故事分享会             宜州一中举行2024届中考百日誓师大会             龙腾启新 筑梦未来 ——宜州区第一中学欢庆2024年元旦文艺晚会             走进嘉联丝厂 畅享研学之乐 ——宜州区第一中学开展研学实践活动             2023年河池市宜州区第一中学/宜州区红卫学校家庭经济困难大学新生入学资助项目发放名册(第二批)             展科技志向,圆飞行梦想 ——宜州区一中2025届举行无人机大赛             2023年河池市宜州区第一中学\红卫学校 家庭经济困难大学新生入学资助项目发放名册(第一批)             法制进校园 以法促成长 ——宜州一中举行“三姐护蕾”法治进校园活动             “英”你精彩,“语”你同行 —— 我校2025届举行英文风采大赛            

DoraCMS

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

文档详情

第7天 Post方法与上传——解析分类数据

doramart 2024-05-04 05:04:50 技术文档232348
表单的字段有两种,一个是表单字段,一个是二进制的文件。而这两种格式的不同在于信息头,下面是个信息头的例子: 表单字段信息头

解析分类数据

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

表单字段信息头

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中间件里。

文章评论

取消回复
登录 参与评论

评论列表(