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