使用 laravel 中自动生成的访问令牌将图像上传到 firebase 存储桶

2024-02-07

我遵循这个link https://laravelwithfirebase.blogspot.com/2020/07/chapter-19-how-to-upload-image-to-firebase-storage-from-laravel-php.html要将图像上传到 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'但它不起作用,并且手动创建的访问令牌在存储中不再可用


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

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

  1. 生成一个所谓的签名网址 https://cloud.google.com/storage/docs/access-control/signed-urls, which is可能来自服务器端代码。该格式与 Firebase 的下载 URL 不同,但签名 URL 还提供公共只读访问。

  2. 设置必要的元数据中的访问令牌 https://stackoverflow.com/a/43764656/209103自己上传的文件。请注意,这不是一个记录在案的 API,因此虽然它现在似乎对许多开发人员都有效,但它可能会在某个时候停止工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 laravel 中自动生成的访问令牌将图像上传到 firebase 存储桶 的相关文章

随机推荐