node.js - nodejs multer image upload:保留文件名和扩展名
问题描述
我在下面有一个 node.js express 代码来上传图像并存储到默认文件夹中。
我意识到文件被重命名并且扩展名丢失了。有人可以帮我解决这个错误吗?
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});
推荐阅读
- wordpress - Woocommerce B2B 插件是否需要?
- postgresql - 如何在 liquibase 中设置当月第一个日期和下个月的默认值?
- pdf - 无法单击 PDF 中的签名字段,但在 Adobe Acrobat Reader 上打开并保存后可以使用
- onedrive - Microsoft Graph SDK OneDrive uploadSession 错误代码:BadRequest
- python - ElementTree 写入方法意外返回 TypeError
- visual-studio - 下载 Clickonce 时如何排除特定文件?
- git - 使用 Jenkins 管道的 Git 结帐非常慢
- node.js - 如何生成一个链接,用户可以点击进入 NodeJS 后端的电子邮件?
- laravel - Lumen 7.0 版本“在 null 上调用成员函数 hash_password()”
- go - 通过转换 unix 时间戳获取不想要的未来日期