Nor*_*Art 5 ios firebase firebase-storage
每当我将图像上传到Firebase Storage 时,只能通过“下载链接”访问该文件。
如果我想让任何人访问这个文件怎么办?
如果我转到Google Platform Storage并输入 Firebase 使用的相同存储桶,我可以看到“公共链接”未选中。
上传照片后如何自动检查?
此类操作可以通过Google Cloud Storage API 完成,但似乎没有任何选项可以通过Firebase 完成。
此外,通过Firebase上传的所有图像都有一个Content-Type of "application/octet-stream".
由于我正在上传图像,因此我希望它具有“ image/jpeg ”或“ image/png ”。有没有办法更改元数据?
更新:我问这个的原因是因为如果一个人使用 Instagram 来创建一个应用程序,就像成千上万张图片的提要一样。不需要为正在获取的每个图像请求下载链接,因为默认情况下,问题中的图像应该已经向公众开放。Firebase 文件上传阻止了这一点,因此每个用户必须为每个图像发出一个请求(每次应用启动可能是大量图像)。例如,Firebase Flame 订阅计划的限制为每月 100,000 次下载/上传。这使得创建具有数千个用户的图像源变得不切实际,每个用户都有数千个图像请求。文件应该可以选择在上传期间创建公共链接,就像 Google Cloud Storage API 本身一样。
对于通过 Firebase Storage 上传的文件,没有配置自动检查 Google Cloud Storage 的公共访问复选框。
也就是说,您可以编写一个 Google Cloud 函数,该函数在上传文件时触发,然后更改文件的属性,具体来说,您需要将对象 ACL 更改为 publicRead。
但由于 Firebase 为您生成的下载 URL 已经是公开可读的,因此我不确定选中此框会带来什么好处。您正在寻找的特定用例是否仅通过共享下载 URL 无法涵盖?
关于问题的第二部分,请查看我们文档的文件元数据部分,其中向您展示了如何设置文件的内容类型:
// Create file metadata to update
FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init];
newMetadata.contentType = @"image/jpeg";
// Update metadata properties
[myRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){
if (error != nil) {
// Uh-oh, an error occurred!
} else {
// Updated metadata for 'images/forest.jpg' is returned
}
}];
Run Code Online (Sandbox Code Playgroud)
元数据也可以在上传时添加,因此不需要第二次请求。
| 归档时间: |
|
| 查看次数: |
1612 次 |
| 最近记录: |