multer使用示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38355456/article/details/78874218

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


使用示例

后端

  • 在router里面做如下配置

const multer = require('multer');
const result = require('../util/result');

let storage = multer.diskStorage({
    //设置上传后文件路径,uploads文件夹会自动创建。
    destination: function (req, file, cb) {
        cb(null, './uploads')
    },
    //给上传文件重命名,获取添加后缀名
    filename: function (req, file, cb) {
        let fileFormat = (file.originalname).split(".");
        let filename = file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]
        cb(null, filename);
    }
});
let upload = multer({
    storage: storage
});
在对应路由controller做如下使用:
//提交数据
//这个地方的upload.single('XXXX'),XXX是对应的前端input框,上传文件的name
router.post('/', upload.single('avatar'), (req, res) => {
    console.log(req.file);

    //如果文件上传成功,获取文件的名字存入数据库
    if (req.file) {
        let file=req.file;
        let fileFormat = (file.originalname).split(".");
        let filename = file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1];
        console.log(filename);

        res.status(200).json(result(0,'上传文件成功'),{
            filename:filename
        })
    }
});

前端:
<form method="post" enctype="multipart/form-data">
    <input type="file" name="avatar" value="选择你上传的文件">
    <input type="submit">
</form>


git示例




猜你喜欢

转载自blog.csdn.net/qq_38355456/article/details/78874218