无法将图片从URI上传到PHP中的Firebase存储

时间:2019-11-10 13:59:31

标签: php image firebase google-cloud-firestore google-cloud-storage

我实际上是试图将图像从其URI上传到我项目的Firebase存储位置。

注1:由于我能够使用相同的SDK读写Firestore数据库,因此我对Firebase的访问似乎工作正常。我已经用作曲家安装了整个套装。

注2:选择图像后,我正在编辑图像,因此我没有直接使用$ _FILES []。因此,文件的输入数据与编辑后的图像不同。

注3:当发送回我的表单文件时,编辑后的图像的URI在标签中可以完美地工作。

1-在我的表单文件中:

<img class="rounded" id="header" src="images/header_placeholder.png" alt="header">
<input type="file" class="sr-only" id="header_input" name="header_img" accept="image/*">
<input id="header_img_url" name="header_img_url" type="hidden" value="">

在提交之前,我的隐藏输入的值已与我编辑的图像URI重新分配。

2-在我上传的PHP文件中(为清楚起见,我删除了大部分firestore代码)

<?php 
require '../../vendor/autoload.php';
use Google\Cloud\Firestore\FirestoreClient;
use Google\Cloud\Core\GeoPoint;
use Google\Cloud\Storage\StorageClient;

function generateRandomString($length = 20) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

$db = new FirestoreClient([
        'projectId' => 'hotpot-XXXXX',
    ]);

# Instantiates a client
$storage = new StorageClient([
    'projectId' => 'hotpot-XXXXX',
]);

$bucket = $storage->bucket('gs://hotpot-XXXXX.appspot.com/');


    $headerImgID = generateRandomString();
    $iconeImgID = generateRandomString();

    $file = fopen($_POST['header_img_url'], 'r');

    $bucket->upload($file, [
        'name' => $headerImgID
    ]);

存在上传行时,我的脚本实际上崩溃了:

    $bucket->upload($file, [
        'name' => $headerImgID
    ]);

我希望您能帮助我找到错误的地方,因为我一直在尝试并尝试了很多,但仍无法解决它:/

1 个答案:

答案 0 :(得分:1)

好吧,我误解了什么是“桶” ..正确的方法是不使用gs://就使用hotpot-XXXXX.appspot.com。