我实际上是试图将图像从其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
]);
我希望您能帮助我找到错误的地方,因为我一直在尝试并尝试了很多,但仍无法解决它:/
答案 0 :(得分:1)
好吧,我误解了什么是“桶” ..正确的方法是不使用gs://就使用hotpot-XXXXX.appspot.com。