Как запустить загрузку в браузере из функции Firebase для изображения в GCS? - PullRequest
0 голосов
/ 03 мая 2018

Я использую эту облачную функцию Firebase, чтобы мои пользователи могли загружать изображения из GCS вместо просмотра их в браузере.

Проблема в том, что по какой-то причине некоторые изображения все еще отображаются в браузере.

Есть что-то, что я пропускаю?

const request = require('request');
const mime = require('mime-types');

exports.downloadFile = functions.https.onRequest((req, res) => {

    const url = req.query.url;
    const filename = url.split('/').pop();
    const mimetype = mime.lookup(filename);

    const headers = {
        'Content-Disposition': 'attachment; filename=' + filename,
        'Content-type': mimetype
    };

    res.set(headers);

    request(url).pipe(res);
});

1 Ответ

0 голосов
/ 03 мая 2018

Попробуйте установить тип содержимого на application/octet-stream вместо того, который вы загружаете из файла.

RFC2046 спецификация типов пантомимы описывает application/octet-stream как произвольные двоичные данные . Поддерживается во всех основных браузерах

Кроме того, ваши теги href могут использовать тег "download" .

Edit: Некоторые браузеры имеют тенденцию обнаруживать тип MIME из заголовка файла. Чтобы предотвратить обнаружение MIME-типа и принудительную загрузку, помимо изменения типа контента также необходимо добавить заголовок Content-Transfer-Encoding: Binary.

...