node.js - 我想将图像从云功能保存到 Firestore 并获取 URL
问题描述
我想在云函数(TypeScript)上实现以下过程。
- 通过网址获取图片
- 将图像保存到云存储
- 获取保存在 Firestore 中的图像的 URL
我正在尝试使用以下代码移动它,有 2 个问题。
- 保存数据需要很长时间(大约 5 分钟)
- 未向保存的图像发出 URL
代码:
const bucket = admin.storage().bucket();
const url = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png';
request(
{ method: 'GET', url: url, encoding: null },
async function (error, response, body) {
if (!error && response.statusCode === 200) {
const file = bucket.file('test/test.png');
const metadata = {
contentType: 'image/png'
};
try {
await file.save(body, metadata);
} catch (err) {
console.log(err);
}
}
}
);
如果您能解释详细信息,将不胜感激。
解决方案
您可能应该明白,当 URL 设置为保存的图像时,它默认为 Firebase 发出的另一个图像。您可能应该查看此文档以了解如何获取该 URL:https ://firebase.google.com/docs/storage/web/download-files 。一种可以将链接(您为其发布的)添加到文件中的方法,您应该将其添加到元数据中,如下所示:
const bucket = admin.storage().bucket();
const url = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png';
request(
{ method: 'GET', url: url, encoding: null },
async function (error, response, body) {
if (!error && response.statusCode === 200) {
const file = bucket.file('test/test.png');
const metadata = {
contentType: 'image/png',
url // <- add url here
};
try {
await file.save(body, metadata);
} catch (err) {
console.log(err);
}
}
}
);
另外它可能需要这么长时间的原因是因为获取图像然后将图像添加到 Firebase。
推荐阅读
- linux - 基于列以相反顺序排序的 Linux bash 未按预期工作
- javascript - 类方法内的 Javascript 递归(此行为)
- python - 循环遍历具有索引特定项的列表
- openrefine - 使用 openrefine 提取名称子字符串
- java - Maven 依赖项排除不起作用
- c# - C#从数据库中搜索开始日期和结束日期之间的日期
- rust - 了解 Rc 的用法
> 在锈 - sql - Finding_Missing_Dates_between_Dates_From_Data_OracleSQL
- model-view-controller - 哪种结构更适合我的 cms 平台
- javascript - 手风琴无法使用 Javascript(无法读取属性)