本文用node进行图片上传主要借助formidable插件,具体使用步骤如下:

  1、安装formidable插件  

npm install formidable -D

  2、引入依赖包   

const formidable = require('formidable');

  3、接口实现逻辑

 router.post('/uploadFile', (req, res, next) => {
let form = new formidable.IncomingForm();
form.encoding = 'utf-8';
//上传到服务器指定文件夹
form.uploadDir =`public/${constant.UPLOAD_FOLDER}`;
form.keepExtensions = true; //保留后缀
form.maxFieldsSize = constant.IMAGE_SIZE;
let data = new MsgBean('上传失败',1);
form.parse(req, (err, fields, files) => {
if (err) {
data.setContent(err);
res.send(data);
return;
}
let file = files.file;
let fileType = new RegExp(file.type, 'g'); let isLegal = fileType.test(constant.IMAGE_TYPE);
if(!isLegal) {//判断上传图片格式是否合法
data.msg('非法的图片格式');
res.send(data);
return;
}
let fileSize = file.size;
if(fileSize > constant.IMAGE_SIZE) {//上传图片超出最大限度
data.msg('图片大小超出最大限制');
res.send(data);
return;
}
let index = file.name.lastIndexOf('.');
let oldPath = files.file.path;
let uploadDate = new Date().getTime();
let fileName = `${file.name.slice(0, index)}_${uploadDate}_origin.${file.name.slice(index+1)}`;
let newPath = `public/${constant.UPLOAD_FOLDER}/${fileName}`;
fs.rename(oldPath, newPath, err => {//图片更名
if(err) {
data.setContent('图片解析失败');
res.send(data);
return;
}
let baseUrl = req.headers.host;
let imgUrl = `http://${baseUrl}/${constant.UPLOAD_FOLDER}/${fileName}`;
let result = {
imgUrl
};
data.setCode(0);
data.setContent(result);
data.setMsg('上传成功');
res.send(data);
});
})
});

最新文章

  1. Web编程基础--HTML、CSS、JavaScript 学习之课程作业“仿360极速浏览器新标签页”
  2. js this理解
  3. c# 列举所有窗口和子窗口
  4. Java_Eclipse安装Git插件
  5. 应用服务器上部署自己的 blog 和 wiki 组件。
  6. ruby学习总结01
  7. mysql row number的实现
  8. 国内外CDN服务商CNAME特征串调研
  9. WM_CLOSE、WM_DESTROY、WM_QUIT的区别(询问,销毁窗口,退出进程,都不是一回事)
  10. 取PE文件的引入表和导出表
  11. 转:js包装DOM对象
  12. O2O难解餐饮行业趋势下行之困
  13. MTU & MSS 详解记录(转)
  14. Mycat安装与使用
  15. SpringBoot构建RESTful service完成Get和Post
  16. Android进阶(二十四)Android UI---界面开发推荐颜色
  17. 一文读懂 JAVA 异常处理
  18. centos7部署asp.net core 应用程序
  19. eclipse 编码
  20. [CF1131F] Asya And Kittens

热门文章

  1. Python中的部分特殊属性
  2. iOS性能优化技巧
  3. 升级版updateOozie.sh
  4. 为何time_before 起作用【转】
  5. kafka系列四、kafka架构原理、高可靠性存储分析及配置优化
  6. 转载:Nginx的命令行控制(1.6)《深入理解Nginx》(陶辉)
  7. S5PV210 ADC转换
  8. jsonp原理和实例详解
  9. JavaScript对象之深度克隆
  10. Laravel collection 报错 join(): Invalid arguments passed