nodejs Multer中间件

Posted codexlx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs Multer中间件相关的知识,希望对你有一定的参考价值。

Multer是一个Node.js中间件,用于处理 multipart/form-data 类型的表单数据,主要用于文件上传
注意:Multer中间件不会处理任何非 multipart/form-data 类型的表单数据
Multer会自动添加一个body对象及file或files对象到 express框架的request 对象,fifile或fifiles对象包含表单上传的文件信息。
通过表单上传文件时需要注意的是:
  (1)单的提交方式只能是POST
  (2)须设置表单的 enctype="multipart/form" 属性
 
1 安装:npm install --save multer
2.用法:
var multer = require(‘multer‘);
var upload = multer({...});
3.multer配置:
//1.进行Multer的自定义配置
var storage = multer.diskStorage({
    //设置文件上传的位置,cb(callback简写)
    destination: function (req, file, cb) {
        //上传到path变量所指定的位置
        cb(null, path);
    },
       //设置上传文件名称的操作
    filename: function (req, file, cb) {
        //对于文件名进行相关的操作
        //获取原始文件的扩展名
        var extension = file.originalname.substr(file.originalname.lastIndexOf(‘.‘)+1).toLowerCase();
        //生成新的文件名
        var filename = uuid.v1() + ‘.‘ + extension;
        cb(null, filename);
    }
});
//2.使用自定义配置
var upload = multer({ storage: storage });
4.请求参数
(1)single(fifieldname)
接收以fifieldname命名的文件上传,该文件的信息存储在 req.file 内,如:
app.post(‘/single‘,upload.single(‘avater‘), (req, res) => {
  res.send({ message: ‘OK‘ });
});
// single它是Multer对象的请求参数名称,avater指表单中input type="file"的name的属性值

 (2)array(fieldname,[maxCount])

接收以fieldname命名的上传文件数组,可通过maxCount参数限制上传文件的最大数量,这些文件的信息存储在 req.files 内,如:
app.post(‘/multiple‘,upload.array(‘album‘), (req, res) => {
  res.send({ message: ‘OK‘ });
});

 5.req.fifile及req.fifiles

req.fifile返回单文件上传时的文件相关信息对象
req.fifiles返回多文件上传时的文件相关信息数组
信息有:
  originalname,上传文件的原始名称
  fifilename,文件上传后的名称
  size,上传文件的字节数(以字节为单位)
  mimetype,上传文件的MIME类型
6.UUID
UUID(Universally Unique Identififier),通用唯 一识别码,其目的是为了让分布式系统中的所有元素都能存在唯一标识信息 -- 文件名称
格式 8-4-4-4-12的形态
安装:npm install --save uuid
使用UUID:
//生成基于时间戳
UUID uuid.v1();
//生成生成随机数的
UUID uuid.v4();

 

 
 
 
 
 

以上是关于nodejs Multer中间件的主要内容,如果未能解决你的问题,请参考以下文章

如何在nodejs的控制器内调用multer中间件?

nodejs--express的中间件multer实现图片文件上传--XUEBIG

使用 multer 和 nodejs 将图像上传到谷歌云存储时出错

不能 app.use(multer)。 “需要中间件功能”错误

Nodejs进阶:基于express+multer的文件上传

nodejs+multer+ajax文件上传