node 使用formidable模块 上传图片
日期: 2017-11-08 浏览量: 3026
formidable模块简介
formidable(node-formidable)是一个Node.js form数据解析模块,非常适合用于文件上传的处理。
安装formidable模块
npm install formidable --save
初始化与数据解析
调用要IncomingForm()构造函数初始模块.
Node.js对HTTP请求的处理是,用户将请求数据封装到req对象中,对象该一个的英文IncomingMessage对象实例。formidable解析用户上传数据也就是对这个对象的解析,初始化后可以通过实例的.parse方法来解析数据。
用户当使用form表单提交数据时,表单中可能会包含两类数据:文件/图片数据,表单普通数据,formidable解析后,这会将两种数据分别放到files和fields两个回调参数中。
代码
const formidable = require('formidable'); exports.uploadFile = (req ,res ,next) =>{ let form = new formidable.IncomingForm(); form.keepExtensions = true; form.parse(req, function(err , fields, files){ //文件储存目录 let dirpath = 'public/upload/file/'; //创建多层目录文件(请查看“多层目录创建”) if(!mkdirSync(dirpath,'777')){ res.json({code:-1,message:'服务器繁忙!'}) } //接受数据并保存 let objUrl = _fileParse(files,dirpath); }) }
//文件保存到本地 function _fileParse(files,dirpath){ let keys = Object.keys(files); let obj = []; keys.forEach(function(key){ let filePath = files[key].path; let fileExt = filePath.substring(filePath.lastIndexOf('.')); if (('.jpg.jpeg.png.gif').indexOf(fileExt.toLowerCase()) === 0){ //以当前时间戳对上传文件进行重命名 let fileName = new Date().getTime()+key+ fileExt; let targetFile = dirpath+'/'+fileName; //保存文件 let readStream = fs.createReadStream(filePath); let writeStream = fs.createWriteStream(targetFile); readStream.pipe(writeStream); //修改路径相对路径 obj.push(targetFile); } }); return obj; }
人活着,其实就是一种心态,你若觉得快乐,幸福无处不在;你为自己悲鸣,世界必将灰暗。
阅读排行
最新文章
联系方式
- 邮箱:m18811126599@163.com
- QQ:896956692