NodeJS 在客户端使用路径图像从数据库获取图像

c86crjj0  于 11个月前  发布在  Node.js
关注(0)|答案(2)|浏览(113)

我使用multer下载图像并将图像的路径保存到数据库,然后如何从客户端获取图像并在屏幕上显示?

import multer from 'multer';

const storageConfig = multer.diskStorage({
    destination: (req, file, cb) => {
         cb(null, './images')
    },

    filename: (req, file, cb) => {
          cb(null, Date.now() + '-' +  file.originalname)
    }
})

const upload = multer({storage: storageConfig});

 let path = '';

app.post('/upload',upload.single('image'), (req, res) => {
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
    if(req.file) {
        console.log(req.file);
        path = req.file.path;
        res.send('hi')
        return;
    }
    res.send('bye')
})

字符串
在我收到文件路径后,我将其保存在数据库中,但我不知道以后如何使用它在屏幕上显示这张图片

ymdaylpp

ymdaylpp1#

根据你提到的代码,你可以在react中显示图像,如下所示。

<img src={`${backend_url}/${path_you_get_from_database}`} />

字符串
在本例中,backend_url为http://localhost:3000

beq87vna

beq87vna2#

在将文件路径保存到数据库之后,你需要实现一个路由来获取图片的url。然后你可以在你的客户端应用程序中简单地使用它。这里我希望你只使用id来获取一个图片。如果你想获取所有存储在数据库中的url,请对这段代码进行必要的修改。
例如:
Server.js

app.get('/image/:id', async (req, res) => {
  //Assuming you have a db connection pool and you are using postgres
  const client = await pool.connect();
  const { id } = req.params;
  const query = 'SELECT url from imag_collection WHERE id = $1';
  const result = await client.query(query, [id]);
  if (!result.rowCount) {
    // Your error handling logic
    // or simply
    res.status(404).json({ message: 'No image found using the given id' });
  }
  res.status(200).json({url: result.rows[0].url});
});

字符串
客户端(ReactJS)

// Collect id from user

const result = await fetch(`${serverUrl}/image/${id}`);
    
if(!result.ok) {
  // Handle the error here
}
    
<img src={`${result.url}`} />

相关问题