当我尝试在multer中使用上传时,上传的文件是二进制的(没有csv扩展名),并给予文件名一个非常随机的名称,有人知道为什么会发生这种情况吗?此外,我正在使用 Postman 发送POST请求,如果这有帮助的话。
我试过改变mimetype和上传配置的名称,仍然没有帮助。
const express = require("express");
const multer = require('multer');
const router = express.Router();
const upload = multer({
dest: './uploads',
mimetype: 'text/csv'
})
router.post('/upload',upload.single('upload'),(res,req,next)=>{
});
module.exports = router;
我没有收到任何错误消息,但本地计算机上的保存文件没有扩展名,其名称为例如:**********
感谢您的帮助!
2条答案
按热度按时间mcdcgff01#
我已经成功上传了fie使用下面的代码使用下面的代码作为参考。
//middleware.js
//file.route.js
busg9geu2#
Multer并没有以二进制格式存储文件。它只是删除了扩展名并随机化文件名以避免冲突。如果你只是添加了正确的扩展名,你就得到了你的文件。
例如:原始文件
hello.jpg
被存储为9958216fa970f07a2d2382e66fb77f05
,只需将其扩展名更改为9958216fa970f07a2d2382e66fb77f05.jpg
。来自文件:Multer
默认情况下,Multer会对文件进行重命名,以避免命名冲突。重命名功能
filename
可以根据您的需要进行定制。Multer出于安全原因不会附加任何文件扩展名,您的函数应返回一个带有文件扩展名的完整文件名。
如何以编程方式实现这一点:原始名称+扩展名
path
用于获取文件的扩展名file
对象有originalname
字段来获取它。尽管我推荐另一个附加值,如file.originalname + Date.now()
,以避免名称冲突并实现级别的唯一性。