切割分类数据

现在要切割并分类上传来的数据,首先就要解析出边界字符串,通过边界字符串,可以把上传的数据按照字段进行分割。

从 content-type 中解析出boundary边界字符串

解析代码如下:

var contentType = req.headers["content-type"];
/(boundary=)/gi.test(contentType);
// boundary 就是边界字符串  -----------------------------7ddc8352a02ea
var boundary = RegExp["$'"];

OK,我们有了边界字符串,就可以利用它进行分割工作了;不过值得注意的是,boundary前面还要加上两个"-",而结尾的边界字符串是最特殊的,因为他还要在后面加上两个"-",另外边界字符串结尾都跟着"\r\n"(除了结尾边界字符串)。所以我们还要定义两个变量,boundaryStandard和boundaryEnd,分别代表一般边界字符串和结尾边界字符串。代码如下:

var boundaryStandard = "--"+boundary+"\r\n";
var boundaryEnd = boundaryStandard+"--";
去掉头尾边界字符串

为了方便下一步的工作,我们要删除头尾的边界字符串,body_data是个字符串形式的数据,保存着整个上传的body体数据。 

//删除头尾边界字符串
body_data = body_data.substring(boundaryStandard.length,body_data.length-boundaryEnd.length);

OK,现在的body_data已去掉头尾边界字符串了,下一步就要用字符串的split方法把数据按照字段分割,分割后保存在一个数组中。

var fields = body_data.split(boundaryStandard);

有了fileds,就可以单独处理字段数据了。处理这些字段数据的过程,我们叫它解析。下一节解析这些分割后的数据,也就是fileds。