【发布时间】:2018-09-22 06:48:00
【问题描述】:
我目前正在尝试使用 php 上传到 Firebase 云存储,但遇到了问题。
我有一个 html 格式的表单,它获取上传的文件(在我的例子中是一个图像),并将其传递给一个 php 文件。
这张图片非常小,12.8kB,是一张JPEG图片。
php 文件获取图像,并尝试将其上传到存储。 我目前的php代码大致是:
$storage = new StorageClient(['projectId' => '<my_project_id> ']);
$bucket = $storage->bucket('images');
$bucket->upload($_FILES['imageToUpload']['tmp_name']);
我可以让它打印存储桶名称和详细信息,所以我知道导致错误的不是那个部分。
我得到的错误是,
Fatal error: Uncaught InvalidArgumentException: A name is required when data is of type string or null.
in /var/www/html/Images/vendor/google/cloud-storage/src/Bucket.php:258
Stack trace: #0 /var/www/html/Images/uploadImage.php(74): Google\Cloud\Storage\Bucket->upload('/tmp/phpA9SAM8')
#1 {main} thrown in /var/www/html/Images/vendor/google/cloud-storage/src/Bucket.php on line 258
哦,如果这很重要,我也在 16.04 Ubuntu 上工作,使用 apache2。 (但我已经能够使用 php 上传到我自己的计算机。现在只需重构以使用 Firebase)
编辑: 当我将代码更改为
$bucket->upload(
file_get_contents($_FILES['imageToUpload']['tmp_name']),
[
'name' => $_FILES['imageToUpload']['name']
]
);
我收到了错误:
Fatal error: Uncaught Google\Cloud\Core\Exception\NotFoundException: { "error": { "errors": [ { "domain": "global", "reason": "notFound", "message": "Not Found" } ], "code": 404, "message": "Not Found" } } in /var/www/html/Images/vendor/google/cloud-core/src/RequestWrapper.php:263
Stack trace: #0 /var/www/html/Images/vendor/google/cloud-core/src/RequestWrapper.php(168): Google\Cloud\Core\RequestWrapper->convertToGoogleException(Object(GuzzleHttp\Exception\ClientException))
#1 /var/www/html/Images/vendor/google/cloud-core/src/Upload/MultipartUploader.php(64): Google\Cloud\Core\RequestWrapper->send(Object(GuzzleHttp\Psr7\Request), Array)
#2 /var/www/html/Images/vendor/google/cloud-storage/src/Bucket.php(268): Google\Cloud\Core\Upload\MultipartUploader->upload()
#3 /var/www/html/Images/uploadImage.php(75): Google\Cloud\Storage\Bucket->upload('/tmp/phpR2vYYg', Array)
#4 {main} thrown in /var/www/html/Images/vendor/google/cloud-core/src/RequestWrapper.php on line 263
【问题讨论】:
标签: php firebase firebase-storage firebase-admin