express文件上传之multer中间件

一、什么是文件上传?

文件上传也称为upload,是指将本地图片、视频、音频等文件上传到服务器存储,可供客户端下载浏览。例如:发朋友圈

二、 Express实现文件上传的中间件

multer

express-fileupload

formidable

busboy

三、multer中间件的使用

(1)作用:

Multer是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。

Multer解析完请求体后,会向Request对象添加一个body对象和file(single,单文件上传)或files(array,多文件上传)对象。

body:提交表单的文本数据

file或files:提交表单上传的文件

(2)使用:

(2-1)安装:

npm install multer -save

(2-2)导入:

const multer=require("multer");

(2-3)配置multer

destination函数定义了文件应该上传到哪里

filename函数用于确定上传文件的文件名。当文件被上传时,Multer会调用这个函数来生成文件的名称。

var storage = multer.diskStorage({

    destination: function (req, file, cb) {

            cb(null, '我的文件上传地址。在项目中一般在public文件夹下建一个upload来存储。public/upload')

    },

   filename: function (req, file, cb) {

    let ext=path.extname(file.originalname);//获取文件的拓展名

        cb(null, file.fieldname + '-' + Date.now()+ext)

    }

});
(2-4)产生对象:
var maxSize=1024;

var upload = multer({ storage: storage, limits:{fileSize:maxSize} }) //限制条件limits可省略
(2-5)方法:
1》单文件上传 single()

upload.single("域名")

当我需要单文件上传表单action="/add"时,

router.post('/add', upload.single('avatar'),(req, res)=> {
  console.log(req.body);
  console.log(req.file);
  res.send('ok');
});
2》多文件上传 array()

upload.array("域名",max最大个数);

当我需要多文件上传表单action="/add"时,

router.post('/add', upload.array('avatar',3),(req, res)=> {
  console.log(req.body);
  console.log(req.files);
  res.send('ok');
});
3》多文件域  fields()

upload.fields([{name:"域名",maxCount:1},.....])

当我需要多文件域上传表单action="/add"时,

router.post('/add', upload.fields([{
    name:'avatar',
    maxCount:3
  },{
    name:'card',
    maxCount:1
  }]),(req, res)=> {
    console.log(req.body);
    console.log(req.files);
    res.send('ok');
  });
(2-6)req.file中输出的file对象

       fieldname - 表单提交的文件域名(name属性)

       originalname - 文件在用户设备中的原始名称

       encoding - 文件的编码类型

       mimetype - 文件的Mime类型

       size - 文件的大小

       destination - 文件的保存目录(DiskStorage)

       filename - 文件在destination中的名称(DiskStorage)

       path - 上传文件的全路径(DiskStorage)

       buffer - 文件对象的Buffer(MemoryStorage)


 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想想aw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值