我正在使用此 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);
});
最佳答案
尝试将内容类型设置为application/octet-stream
,而不是从文件加载的内容类型。
RFC2046 MIME 类型规范将 application/octet-stream
描述为任意二进制数据。所有主流浏览器均支持
此外,您的 href 标签可能会使用 a "download" tag .
编辑:
某些浏览器倾向于从文件头检测 MIME 类型。为了防止 MIME 类型检测和强制下载,除了修改内容类型之外,您还必须添加 Content-Transfer-Encoding: Binary
header 。
关于javascript - 如何在浏览器中从 Firebase 函数触发 GCS 中图像的下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160868/