【发布时间】:2021-04-25 18:13:42
【问题描述】:
请我尝试发帖并从邮递员那里获取请求,这会将图像的路径保存到 mongodb 而不是二进制文件。 我成功地将包含表单数据(文本和文件)的数据发布到 mongodb,但该文件是一个缓冲区。我希望它是二进制数据,所以当我想取回它时,我不会得到二进制数据。 文本已成功发布,并且正在返回所需的文本,但图像正在发送二进制文件并且正在返回二进制文件,这是一个非常糟糕的主意。
我需要帮助。
//POST Request
app.post('/request', upload.single('images'), async function(req, res){
const requestBody = {
name: req.body.name,
description: req.body.description,
images: req.file.buffer
}
const request = new Request(requestBody)
try{
await request.save()
res.status(201).send()
}catch(e){
res.status(400).send(e)
}
})
//GET request
app.get('/request', async function(req, res){
try{
const requests = await Request.find({})
// console.log(requests)
res.send()
}catch(e){
res.status(500).send()
}
})
【问题讨论】:
-
您可以先将用户上传的内容存储在目录中,然后将其绝对路径存储在数据库中。
-
部署到生产环境时本地目录@Hassan 会发生什么
-
这就是问题所在,如果您只存储图像的 URL,那么您还需要机器上的图像。这意味着您的生产服务器应该有图像目录(然后将根据请求提供图像)。
-
您认为还有哪些更好的方法可以实现这一点。 @哈桑
-
这真的取决于。我最近实际上为一个项目存储了缓冲区。但是在这里寻找一个全面的答案stackoverflow.com/a/56419886/7660998。
标签: node.js mongodb express postman