簡體   English   中英

從api返回圖像二進制數據並顯示在html上

[英]Return image binary data from api and display on html

我將圖像存儲在mongodb數據庫中。 我想顯示從Express api獲得的響應作為客戶端上的圖像。 圖片來源看起來像這樣

src="/image/data/5a44dde172aa021d107e7d33"

而且我發回這樣的數據。 當我將圖像網址寫入瀏覽器時,它什么也沒有顯示。

var imgId = req.params.id;

imageModel.findById(imgId)
    .then((img) => {
        res.status(200).send(img.data);

    })
    .catch((exc) => {
        res.status(400).send();
    });

我這樣上傳文件。

router.post("/", upload.any(), (req, res) => {


    if (req.files && req.files.length > 0) {
        for (var i = 0; i < req.files.length; i++) {
            var file = req.files[i];

            var image = new imageModel({ data: file.buffer.toString(), name: file.fieldname, createdBy: req.user.id });
            image.save(function (err, img) {
                if (err)
                    res.status(400).send(err);
                else
                    res.status(200).send(response.create(img));
            });
        }
    }
});

我究竟做錯了什么?

我通過改變解決了這個問題

 file.buffer.toString()

 file.buffer.toString('binary')

文件上傳代碼和

res.status(200).send(img.data)

 res.status(200).contentType("image/jpeg").send(new Buffer(img.data.toString(), 'binary'))

在獲取api方法上。 它按我的預期工作,圖像現在可以顯示在頁面上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM