首页 > 解决方案 > nodejs multer image upload:保留文件名和扩展名

问题描述

我在下面有一个 node.js express 代码来上传图像并存储到默认文件夹中。

我意识到文件被重命名并且扩展名丢失了。有人可以帮我解决这个错误吗?

1.如何保留扩展名和文件名

  1. 如果上传 zip 文件,我想将其解压缩并上传

    const __basefolder = "C:/Users/user/Desktop";
    const express = require('express');
    const multer = require('multer');
    const upload = multer({dest: __basefolder + '/uploads/images'});
    const app = express();
    const PORT = 3000;
    
    app.use(express.static('public'));
    app.post('/upload', upload.single('file'), (req, res) => {
        if(req.file) {
            res.json(req.file);
        }
        else throw 'error';
    });
    app.listen(PORT, () => {
        console.log('Listening at ' + PORT );
    });
    

标签: node.jsexpressmulter

解决方案


您可以filename在磁盘存储设置中定义 - 选项,让您可以任意选择文件名。由于您想要原始文件名,因此可以使用file.originalname(请注意,使用此同名的现有文件将被覆盖):

const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, __basefolder + '/uploads/images');
    },
    filename: (req, file, cb) => {
        cb(null, file.originalname);
    }
})

const upload = multer({storage});

关于第二个问题:这个之前已经回答过,例如看到这个那个


推荐阅读