概述 multer 和 multer 的简单使用

介绍

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

注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据。

使用

这里写个文件专门统一处理以下multer

const multer = require('multer');
const uuid = require('uuid');

// 创建 uploads 目录(如果不存在)
const fs = require('fs');
const path = require('path');
const uploadsDir = path.join(__dirname, '../public/uploads');
if (!fs.existsSync(uploadsDir)) {
    fs.mkdirSync(uploadsDir);
}
// const upload = multer({ dest: 'uploads/' }); // 设置文件保存目录

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, path.join(__dirname, '../public/uploads'))
  },
  filename: function (req, file, cb) {
    /*Appending extension with original name*/
    // uuid.v4()
    // 处理中文乱码问题
    let fileOriginalName = Buffer.from(file.originalname, 'latin1').toString('utf-8');
    file.originalname = fileOriginalName
    
    cb(null, uuid.v4() + path.extname(file.originalname)) 
  }
})

var upload = multer({ storage: storage });


module.exports = {
    upload
}

接收单文件

router.post('/upload', upload.single('file'), ()=>{});

这里的file为请求时传递文件的参数名

通过req.file获取接收的文件


接收多文件

router.post('/upload', upload.array('files'), ()=>{});

这里的files为请求时传递文件的参数名

通过req.files获取接收的文件

可以通过传第二个参数确定只能传多少个,例如

router.post('/upload', upload.array('files'3), ()=>{});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值