在express中接收网页POST过来的图片data时,chunk拼接后得到的数据头尾总是用一段说明信息(大小314字节)。
请问如何取出真正的图片data内容?
这段信息有什么用?
↓得到的数据
------WebKitFormBoundary1h2fSYcmIqL12kVj Content-Disposition: form-data; name="uid" rc-upload-1488190554987-16 ------WebKitFormBoundary1h2fSYcmIqL12kVj Content-Disposition: form-data; name="file"; filename="2328bd2a317f33315c60.jpeg" Content-Type: image/jpeg 《这里是需要的图片数据》 ------WebKitFormBoundary1h2fSYcmIqL12kVj--
↓chunk拼接代码
var chunks = []; var size = 0; req.on('data',function(chunk){ chunks.push(chunk); size += chunk.length; }); req.on('end',async()=>{ var data = null; switch(chunks.length) { case 0: data = new Buffer(0); break; case 1: data = chunks[0]; break; default: data = new Buffer(size); for (var i = 0, pos = 0, l = chunks.length; i < l; i++) { var chunk = chunks[i]; chunk.copy(data, pos); pos += chunk.length; } break; } });
这种Boundary存在浏览器的差异问题,而且不同content-type接收和处理的方式也不一样;
所以建议使用formidable或者其他模块;