首页 > 解决方案 > 返回本地存储图像的 URL [Node JS API]

问题描述

我正在创建一个接收 base64 字符串的 API,将其转换为图像 [label.jpeg],然后返回图像的 URL。现在我被困在如何创建本地图像的 URL 以便可以公开访问它。

下面是我的代码,目标是在调用 API 时返回“label.jpeg”的 URL 地址。

// Post base64 string
app.post('/post-base64', (req, res) => {

    // Captured img [base64 string]
    let strBase64 = req.body
    console.log(strBase64)

    // Convert base64 --> img.jpeg
    let buffer = Buffer.from(strBase64, 'base64')
    console.log(buffer)

    // Write base64 to file
    let writeStream = fs.createWriteStream('label.txt')
    writeStream.write(buffer, 'base64')


    writeStream.on('finish', () => {
        console.log('WROTE ALL!')
    })

    writeStream.end()

    // Save img as 'label.jpeg'
    fs.writeFileSync('label.jpeg', buffer)

    res.send({
        // TOD0: Return label.jpeg link
    })
})

谢谢。

标签: javascriptnode.jsexpressfs

解决方案


您可以将上传的图像存储在通过express.static. 例如:

// add this to your app.js
app.use(express.static('public'))

// store uploaded image in the public folder
app.post(..) => {
   // ... note that you should probably switch
   // to the non-blocking version e.g. fs.promises.writeFile(...)
   fs.writeFileSync(__dirname + '../public/name-of-img.jpeg', buffer)
})

Express 现在将负责提供文件,因此图像的 URL 将是http://yourhostname/name-of-img.jpeg


推荐阅读