【发布时间】:2019-11-10 13:59:31
【问题描述】:
我实际上是在尝试将图像从其 URI 上传到我项目的 Firebase 存储位置。
注意 1:我对 Firebase 的访问似乎工作正常,因为我能够使用相同的 SDK 对我的 Firestore 数据库进行写入和读取。我已经使用 composer 安装了整个套装。
注意 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
]);
我希望你能帮我找出我错的地方,因为我一直在搜索和尝试很多,但我无法修复它:/
【问题讨论】:
标签: php image firebase google-cloud-firestore google-cloud-storage