繁体   English   中英

如何将图像 url 保存到 mongodb 并取回

[英]How to save image url to mongodb and get it back

请我尝试发帖并从 postman 获取请求,这会将图像的路径保存到 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()
    }
})

您可以将文件路径保存在公用文件夹中,并将带有字符串的路径保存在 mongodb

您需要在公共文件夹中创建photos文件夹并将其设置为 static

mkdir -p public/photos

然后您可以使用 express static 注册路径

app.use(express.static(__dirname, 'public'))

并将所需的路径保存在db中。 在这里您应该使用存储在req.file.path中的文件的 static 路径

const upload = require('multer')({ dest: path.join(__dirname, 'public/photos') })
app.post('/request', upload.single('images'), async function(req, res){
    const requestBody = {
        name: req.body.name,
        description: req.body.description,
        images: req.file.path
    }
    const request = new Request(requestBody)

    try{
        await request.save()
        res.status(201).send()

    }catch(e){
        res.status(400).send(e)
    }

})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM