图像中的 firebase 存储不会在 Laravel 中生成访问令牌

时间:2021-03-21 09:26:14

标签: php laravel firebase firebase-storage

$image = $request->file('image'); //image file from frontend  
$name = $image->getClientOriginalName();
$firebase_storage_path = 'notificationImage/';  
$localfolder = public_path('firebase-temp-uploads') .'/';  
$extension = $image->getClientOriginalExtension();  
$file      = $name;  
if ($image->move($localfolder, $file)) {  
    $uploadedfile = fopen($localfolder.$file, 'r');  
    $storage->getBucket()->upload($uploadedfile, ['name' => $firebase_storage_path . $file]);  
    //will remove from local laravel folder  
    //unlink($localfolder . $file);  
    echo 'success';  
} else {  
    echo 'error';  
}  

enter image description here enter image description here 图片上传到 firebase 存储文件夹,但未生成令牌。

1 个答案:

答案 0 :(得分:0)

看起来您的脚本没有设置访问令牌。正如您所了解的,Web 界面默认执行此操作。在这种情况下,检查文件元数据很有用。

您可以使用 gsutil,这对于其他任务也非常方便。 https://cloud.google.com/storage/docs/gsutil_install

当然,您也可以使用 Google Cloud Console,它可以为您提供比 Firebase 更详细的信息。 https://console.cloud.google.com/storage/browser

这是我从网上上传的文件:

$ gsutil ls -L  gs://foo.appspot.com/profiles/bar/avatar.jpg
gs://foo.appspot.com/profiles/bar/avatar.jpg:
    Creation time:          Sat, 20 Mar 2021 13:56:00 GMT
    Update time:            Sun, 21 Mar 2021 12:18:22 GMT
    Storage class:          STANDARD
    Content-Length:         68107
    Content-Type:           image/jpeg
    Metadata:
        firebaseStorageDownloadTokens:abcd1234-e749-4473-91c9-07cf2f27ede2
    Hash (crc32c):          hHZfWQ==

    Hash (md5):             W2sIeTGeiktc6i+eDLkeqA==
    ETag:                   CNL+y4qDv+8CEAM=
    Generation:             1616248560615250
    Metageneration:         3
    ACL:                    [
  {
    …

元数据字段 firebaseStorageDownloadTokens 实际上包含您在 Firebase 网络用户界面中看到的相同访问令牌。

不幸的是,我不懂 PHP,但为 firebaseStorageDownloadTokens 字段生成 UUID 并在上传文件时将其添加为元数据应该相当简单。