【问题标题】:Download image from URL, save to Firebase Store, and serve image URL从 URL 下载图片,保存到 Firebase 商店,然后提供图片 URL
【发布时间】:2022-01-01 18:17:48
【问题描述】:

很难找到一些代码来执行此操作,实际上我自己在尝试使其正常工作时遇到了麻烦。我想创建调用图像的 Firebase 函数 URL(这个 URL 有一个来自 Mapbox 的与之关联的令牌)。然后我想将图像写入 Firebase 存储,以便稍后从那里引用它来提供它。到目前为止,我已经弄清楚如何获取图像,但将其保存到存储空间对我来说似乎太多了!救命!

exports.getPolylineFromSessionId = functions.https.onRequest(async (req, res) => {
    const sessionId = req.query.id;
    if (sessionId) {
        const sessionInfo = await db
            .collection('sessions')
            .doc(sessionId)
            .get();
        const session = sessionInfo.data();
        const results = encodeURIComponent(polyline.encode(convertGpsTrack(session.gpsTrack)));
        const url =
            'https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/path-1+fff-0.5(' + results + ')/auto/700x200?access_token=' + mapboxToken;

         const bucket = admin
            .storage()
            .bucket('gs://mybucket.appspot.com')
            .file('thumbnails/' + sessionId + '.jpg');

         const res = await fetch(url, {
            method: 'GET',
            headers: {
                'Content-Type': 'image/jpeg',
            },
         });
         const blob = await res.blob();
         bucket.save(blob, {
            metadata: {
                contentType: 'image/jpeg',
            },
         });

        res.status(200).send(session);
    } else {
        res.status(400).send('sessionId required');
    }
});

【问题讨论】:

标签: node.js firebase google-cloud-functions fetch firebase-storage


【解决方案1】:

我终于弄明白了!下面是我使用的代码!

var file = admin
    .storage()
    .bucket('gs://mybucket.appspot.com')
    .file('thumbnails/' + sessionId + '.jpg');

request({ url: url, encoding: null }, function(err, response, buffer) {
    var stream = file.createWriteStream({
        metadata: {
            contentType: response.headers['content-type'],
        },
    });
    stream.end(buffer);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2016-03-30
    • 2015-09-15
    • 2021-03-10
    • 1970-01-01
    相关资源
    最近更新 更多