Express 的集成度越来越小,一些附加功能都是通过中间件实现的,上传功能需要处理form-data,试用了一下busboy(在Express中使用connect-busboy),还是十分不错的。
busboy 原地址:https://github.com/mscdex/busboy
connect-busboy中给出的例子十分简单,或者说十分简陋,具体功能还需要在busboy原地址中学习。
首先需要在app.js中require一下,并设置相关参数
var busboy =require('connect-busboy'); app.use(busboy({ immediate: true }));
其中immediate选项表示立即从request流读取并解析数据
然后在routes里开写吧!
var uuid = require('node-uuid') if (req.busboy) { req.busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { console.log(fieldname); console.log(filename); console.log(file); console.log(mimetype); if(mimetype.substr(0,5)=="image"){//我这里是上传了图片 var id = uuid.v1(); console.log(id); tmpUploadPath = path.join(conf.__uploads, id+'.jpg'); file.pipe(fs.createWriteStream(tmpUploadPath)); msg = {errorno:0,uuid:id,msg:"success"} } }); req.busboy.on('field', function(key, value, keyTruncated, valueTruncated) {//处理其他非文件字段 console.log(key); console.log(value); }); req.busboy.on('finish', function() {//处理完毕后的回调 res.json(msg) }); }
可以看到 busboy在处理form-data还是非常方便的,值得选用,如果进一步进行裁剪、缩放的功能,再结合gm之类的中间件处理应该更好
浏览:1,633
近期评论