【问题标题】:How to display image downloaded from cloud storage in the browser?如何在浏览器中显示从云存储下载的图像?
【发布时间】:2017-11-27 03:23:03
【问题描述】:

目前,我从我的云存储桶下载图像,将其编码为 base64,然后将其传递到 img 标记的 src 属性中的数据 uri 中。

还有其他方法吗?

router.post('/images', function(req, res, next) {
    var image = bucket.file(req.body.image);
    image.download(function(err, contents) {
        if (err) {
            console.log(err);
        } else {
            var resultImage = base64_encode(contents);
            var index = req.body.index;
            var returnObject = {
                image: resultImage,
                index: index
            }
            res.send(returnObject);
        }
    });
});

【问题讨论】:

    标签: javascript node.js google-cloud-platform google-cloud-storage


    【解决方案1】:

    图片是否可以公开阅读?如果是这样,您可以使用

    <img src="http://<bucket>.storage.googleapis.com/<object>">
    

    否则,您将需要为 GET 操作生成 signed URL,该操作可用于图像标签中。

    【讨论】:

    • 遗憾的是,出于安全原因,我不想使用这两个选项。任何人都可以点击这些网址让我的后端屈膝。
    • 您能否澄清您对签名 URL 的担忧?在服务器端生成签名 URL 是有成本的,但除非您需要每秒生成数千个,否则即使是非常小的机器也应该可以管理。
    • @BrandonYarbrough 这是关于安全性的。任何人都可以从我的网站合法地获取签名 URL,然后开始使用机器人或僵尸网络访问该 URL 数百万次。然后在当前 URL 过期时获取另一个签名 URL,依此类推。这就是为什么我目前从服务器上的存储桶中下载图像的原因。除了我的服务器,没有人可以访问我的存储桶。唯一的问题是加载 64bit 编码的图像有点慢,所以我想知道是否还有其他更好的解决方案也很安全。
    • @BrandonYarbrough 看来你没有用@ ping 我,我没有收到你的消息通知,今天才看到。请ping我的答案,因为我对此非常感兴趣^^
    • @BrandonYarbrough 我最担心黑客让我的云存储下载费用爆炸式增长。
    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 2011-09-27
    • 1970-01-01
    • 2021-12-01
    • 2011-06-12
    • 2011-03-01
    • 2019-08-05
    • 2021-06-13
    相关资源
    最近更新 更多