从以下返回的 req.file 属性不包含缓冲区属性(https://www.npmjs.com/package/multer)。因此,当我尝试访问 req.file.buffer 时,它返回未定义。有人可以帮忙解释一下吗。`
const multer = require('multer')
const uploadtest = multer({
dest: 'avatar'
})
router.post('/uploadtest', uploadtest.single('upload'), (req, res)=>{
console.log(req.file)
req.user.avatar = req.file.buffer
await req.user.save()
res.send()
}, (error, req, res, next)=>{
res.status(400).send({error: error.message})
}
)
Run Code Online (Sandbox Code Playgroud)
` console.log(req.file) 的输出是:
{
fieldname: 'upload',
originalname: 'sample-doc-file.doc',
encoding: '7bit',
mimetype: 'application/msword',
destination: 'avatar',
filename: 'e488d6205717d45f397782b79d45fd8e',
path: 'avatar\\e488d6205717d45f397782b79d45fd8e',
size: 22528
}
Run Code Online (Sandbox Code Playgroud)
小智 21
这是预期的,因为您正在使用 DiskStorage - 代码multer使用“dest”选项进行初始化,因此它将在本地保存文件。看一下 multer README - API 文档在“Note”列中说buffer仅适用于 MemoryStorage。
因此,您必须决定 - 是否希望将文件保存到文件系统(并获取路径),或完全加载到内存中(并获取缓冲区)?在后一种情况下,自述文件包含一个名为“MemoryStorage”的部分,演示了如何配置 multer:
const storage = multer.memoryStorage()
const upload = multer({ storage: storage })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16651 次 |
| 最近记录: |