nodejs多图上传:保留文件名和扩展名

nodejs multer image upload : retain file name and extension

我在下面有一个 node.js 快速代码,用于上传图像并存储到默认文件夹中。

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

1.How 保留扩展名和文件名

  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 );
    });
    

您可以在磁盘存储设置中定义一个 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});

关于第二个问题:之前已经回答过,例如 or