Multer的基本使用

蔺山
2023-12-01

详细文档请前往githut学习

https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md

这里分享一下两种常用的使用:

1.将文件存储到本地

下载依赖
yarn add multer
npm i multer
//导入包
const multer = require('multer')
//dest 指定存储文件的本地位置 single 参数的名称
router.post('/upload',multer({dest:paths.join(__dirname,'../public/algorithm_file')}).single('file'),(req,res)=>{
	//当程序执行进来的时候,文件已经存储到了指定文件夹,我们需要更改文件名称  不改也行

	//获取除了文件信息之外的其他信息,从前端传过来的
    const {id,title} = req.body
    console.log(title);
    //获取文件的信息。名称和地址
    const {originalname,path} = req.file
    //获取文件的后缀
    const extname = paths.extname(originalname);
    //拼接出新的文件名
    let name = 'algorithm_file/'+Date.now()+title + extname
    let newFileName = paths.join(__dirname,'../public/') + name;
    //更改文件名
    fs.rename(path,newFileName,err=>{
        if (err) return res.cc(err)
        //将文件信息存储到数据库
        const sql = `update le_algorithm set ? where id = ?`
        db.query(sql,[{daan:name,statue:'已结束'},id],(err, result)=>{
            if (err) return res.cc("添加失败")
            return res.send({
                status:200,
                message:'ok'
            })
        }) 
    })
})

2. 获取文件流,并上传到minio

//导入依赖,并进行配置
const multer = require('multer')
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });

router.post('/api/upload',upload.single('file'),async (req,res)=>{
    const {originalname,path,size} = req.file
    const extname = paths.extname(originalname);
    let name = Date.now()+extname
	//获取文件流
    const fileBuffer = req.file.buffer
    //传递给封装好的minio函数,进行上传
    const result = await  MinioUtils.putFile(name,fileBuffer,extname,size);
    if(!result.result) return  res.send({
        msg:"上传失败",
        code:200,
    })
    return res.send({msg:"上传成功",code:200})
})
 类似资料: