nodejs多图上传:保留文件名和扩展名
nodejs multer image upload : retain file name and extension
我在下面有一个 node.js 快速代码,用于上传图像并存储到默认文件夹中。
我意识到文件被重命名并且扩展名丢失了。有人可以帮我解决这个错误吗?
1.How 保留扩展名和文件名
如果上传的是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
我在下面有一个 node.js 快速代码,用于上传图像并存储到默认文件夹中。
我意识到文件被重命名并且扩展名丢失了。有人可以帮我解决这个错误吗?
1.How 保留扩展名和文件名
如果上传的是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});
关于第二个问题:之前已经回答过,例如