首页 > 解决方案 > 图像中的firebase存储不会在laravel中生成访问令牌

问题描述

$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';  
}  

在此处输入图像描述 在此处输入图像描述 图像上传到 Firebase 存储文件夹,但未生成令牌。

标签: phplaravelfirebasefirebase-storage

解决方案


看起来您的脚本没有设置访问令牌。如您所见,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 Web ui 中看到的相同访问令牌。

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


推荐阅读