NPM-multer文件上传三方包

根据自己使用下来的经验multer提供了一下几个重要和常用的功能:

  1. 完成文件上传路径设定
  2. 完成上传后的文件名的命名
  3. 使用过程中可自定义可上传的文件类型
  4. 限制上传文件的大小

基本上我在使用中需要用到的功能就是以上四点了,接下来讲讲到底如何使用multer。 使用有一下几个步骤:

  1. 获取multer引用
  2. 配置multer,包括对存储位置的配置和文件名称的配置
  3. 作为中间件在路由中使用 代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const multer = require('multer') // 获取引用

// 设置上传组件的参数
const storage = multer.diskStorage({
destination: config.uploadPath, // 上传的文件位置(自定义)
filename: function (req, file, cb) {
cb(null, file.originalname + '-' + Date.now() + path.extname(file.originalname)) // 保存的名字(这里只是简单的加上时间戳)
}
})

// 将配置应用到multer上
// .array('file')表示可以接受前端同时上传多个文件,而其中的'file'表示前端form中上传的input的name
const upload = multer({
storage: storage
}).array('file')

// 作为中间件使用
app.use('/api/upload', (req, res, next) => {
upload(req, res, (err) => {
if (err) {
return next(err)
}
else {
next()
}
})
}, (req, res, next) => {
console.log(req.files)
res.send('success')
})

使用方法如代码所示,并没有如文档中说的在全局配置中间件的原因纯粹是因为没必要,只有这个路由需要上传就只在这个路由使用中间件就好了。 其中又遇到一个点,我是使用element-ui中的上传组件,并不知道name是什么,不过也好解决,看看请求头附带的信息知道了name应该是file所以就.arry(‘file’),明天再看看是否可以自己设置name属性。

  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2023 翟天野

请我喝杯咖啡吧~