nodejs中处理文件上传可以使用 multer 中间件
该中间件可以处理图片或者文件
以下是该中间件处理图片的方式
用法
- 安装
$ npm install --save multer
- 使用
const multer = require('multer') //导入multer中间件
const upload = multer({ dest: 'image/' })
//一个用来处理文件数据的对象,有多种方法
//dest用来定义一下文件存储路径;可以是相对路径,如当前格式,就会在代码运行文件所在文件夹下生成一个image文件夹
//也可以是绝对路径如 C://xxx 也可以生成对应的文件夹,
//注意权限问题
// upload.single('image'),接收单个文件数据,不能用于处理多文件上传
// ('image') 中用于填写接收文件的 name 属性值,不一致则不接收
router.post('/photos/upload', upload.single('image'), function (req, res, next) {
// req.file是读取的图片数据,然后要进行处理才能存储
User.findByAccount(req.body, result => {
if (result.length) {
if(result[0].userImg){
fs.unlink(result[0].userImg,(err)=>{
if(err){
console.log(err)
}
})
} //个人处理,可有可无,在新图片存贮之前把旧的图片删除的操作
const file = req.file //这是前端上传的,multer处理过的图片数据
const extname = path.extname(file.originalname) //文件后缀名
const filepath = file.path //文件存储路径
const filename = filepath + extname //处理之后的文件名,可以用来存储或者读取
fs.renameSync(filepath, filename) // 将目前存储的文件名重命名
result[0].userImg = filename
User.change(req.body, result[0], doc => {
if (doc.ok === 1) {
res.send('success')
} else {
res.send('error')
}
}) //存入mongodb库
}
})
//处理完成,下面开始读取图片并转换成base64格式在下个接口中读取发送给前端(传输时候遇到权限问题,不能通过路径直接访问本地文件,所以做了处理,个人操作)
})