微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Reactjs渲染图像存储在服务器中

如何解决使用Reactjs渲染图像存储在服务器中

我想使用multer渲染存储在Node.js服务器中的图像

router.post('/menu_add',(req,res,next) => {
        upload(req,(err) =>{
            if(err){
                res.render('admin-menu-add',{ error: 'File size large upload,Please make it less than 2 MB' })
            }
            else {
                next()
            }
        }) 
    },async (req,res) => {
            const { name,GST,category} = req.body
            const price = parseInt(req.body.price)
            const gst = parseInt(GST)
            const newMenuItem = new MenuItem({
                name,image: {
                    data: fs.readFileSync(path.join(__dirname + '/uploads/menu/' + req.body.name)),contentType: 'image/png'
                },price,category,GST: gst,GSTamt: gst * price / 100,totalPrice: price + gst * price / 100
            })
        try {
            await newMenuItem.save()
            res.redirect('/menu')
        }
        catch (err) {
            res.render('admin-menu-add',{ error: 'Item Already present' })
        }
    }
)

现在我也尝试使用React服务器访问该图像,该图像在我正在渲染的ejs文件中工作正常,但是我还需要一个在React客户端中访问该图像,以下是服务器端代码为此

router.post('/items',res) => {
    const {category} = req.body
    const cat = await Category.find({name: category})
    const menuItems = await MenuItem.find({category: cat._id})
    res.status(200).send(menuItems)
})

但是在访问图像时是在客户端上

useEffect(() => {
      axios.get('http://localhost:4000/server/categories')
      .then(res => {
        console.log(res.data)
        setCategories(res.data)
      })
    },[])

和JSX中的

(categories.map((cat,ind) => {
                      ***const data = `data:image/${cat.image.contentType};base64,`+ cat.image.data.toString('base64)***
                      console.log(data)
                      return(
                        <div className="col-6 category_Box" key={ind}>
                        <Link to={'/' + cat.name}>
                            <div className="column_Box text-center">
                                <img src={data} alt="" />
                                <p>{cat.name}</p>
                            </div>
                            </Link>
                        </div>
                    )}))

数据变量== HomePage.js:34 data:image / image / png; base64,[object Object] 在JSX中,当它在ejs中工作时无法正常工作,以下代码可以正常工作

<td><img src="data:image/<%= item.image.contentType%>;base64,<%=item.image.data.toString('base64')%>" width="100" height="100">
                                </td>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。