【问题标题】:Upload image to firebase bucket with auto generated access token in laravel使用laravel中自动生成的访问令牌将图像上传到firebase存储桶
【发布时间】:2021-01-27 16:08:48
【问题描述】:

我按照link 将图像上传到 Firebase 存储,图像被上传到存储中。但是,要查看图像,我必须在存储中的图像内手动生成访问令牌。我希望有什么想法可以从我的代码中自动生成该特定图像的访问令牌。

下面是我上传图片的代码

$factory = (new Factory)->withServiceAccount(__DIR__.'/myfirebase.json');
$storage = $factory->createStorage();
$image = $request->file('image');

$localfolder = public_path('firebase-temp-uploads') .'/';

if (!file_exists($localfolder)) {
    mkdir($localfolder, 0777, true);
}

$extension  = $image->getClientOriginalExtension();

$file = $shopId. '.' . $extension;

if ($image->move($localfolder, $file)) {
    $uploadedfile = fopen($localfolder.$file, 'r');
    $storage->getBucket()->upload($uploadedfile, [
        'name' => 'categories/'.$file,
        // 'predefinedAcl' => 'PUBLICREAD',
    ]);
    unlink($localfolder . $file);
}

我尝试使用'predefinedAcl' => 'PUBLICREAD',但它不起作用,并且手动创建的访问令牌在存储中也不再可用

【问题讨论】:

    标签: php laravel firebase google-cloud-storage firebase-storage


    【解决方案1】:

    不会为通过服务器端 SDK 上传到 Cloud Storage 的文件生成下载 URL。

    您有两种选择可以在自己的代码中为这些文件生成可公开访问的 URL:

    1. 生成一个所谓的signed URL,它可能来自服务器端代码。格式与 Firebase 的下载 URL 不同,但签名 URL 还提供公开的只读访问权限。

    2. 自己设置上传文件的必要access token in the metadata。请注意,这不是一个记录在案的 API,因此虽然它现在似乎适用于许多开发人员,但它可能会在某个时候停止工作。

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 2020-04-13
      • 2020-01-28
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      相关资源
      最近更新 更多