为了账号安全,请及时绑定邮箱和手机立即绑定

使用 PHP 将图片上传到 Firebase 存储,但必须手动创建访问令牌才能使其可见

使用 PHP 将图片上传到 Firebase 存储,但必须手动创建访问令牌才能使其可见

PHP
缥缈止盈 2023-10-22 22:00:24
我正在使用 PHP 将图像上传到 firebase 存储。图片正在上传,但无法访问,因为我必须手动创建“访问令牌”才能访问它。这是我使用的代码 $bucketName = "example.appspot.com";$objectName = 'Photos/test.jpeg';$storage = new StorageClient();$bucket = $storage->bucket($bucketName);$object = $bucket->upload(fopen('sign.jpeg', 'r'),    [       'name' => $objectName        ]     ); 
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

这确实按预期工作:由于您的上传不是通过 Firebase SDK,因此没有方法生成下载 URL。

常见的解决方法是创建一个过期时间很远的签名 URL ,这是 Cloud Storage 与 Firebase 的下载 URL 最接近的等效项。


查看完整回答
反对 回复 2023-10-22
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

我采用了一种间接的方式来生成和存储访问令牌。


$payload = file_get_contents('https://firebasestorage.googleapis.com/v0/b/example.appspot.com/o/Photos%2Fpic.jpeg');

$data = json_decode($payload); 

echo $data->downloadTokens; 

此代码已创建访问令牌,并在屏幕上显示 downloadToken。


谢谢大家的回答。


查看完整回答
反对 回复 2023-10-22
?
桃花长相依

TA贡献1860条经验 获得超8个赞

您还可以将publicReadACL分配给上传的文件并手动编写公共URL:


$bucketName = "example.appspot.com";

$objectName = 'Photos/test.jpeg';


$storage = new StorageClient();

$bucket = $storage->bucket($bucketName);


$object = $bucket->upload(fopen('sign.jpeg', 'r'), [

   'name' => $objectName

   'predefinedAcl' => 'publicRead'

]);


$publicUrl = "https://{$bucket->name()}.storage.googleapis.com/{$object->name()}";


查看完整回答
反对 回复 2023-10-22
  • 3 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信