Вы присваиваете переменной gs_name
возвращаемое значение функции file_get_contents и передаете эту переменную в функцию fopen .
Если нет пути, совпадающего с содержимым такого файла, которое обычно ожидается, fopen
возвращает значение false.
Итак, вы передаете значениеfalse в качестве первого параметра для $ bucket-> upload , который фактически создает двоичный объект размером 0 байт с именем, которое вы указали в соответствующем сегменте.
Таким образом, в итоге должно работать следующее:
public function do_upload() {
if ($_FILES) {
$filename = $_FILES['file']['name'];
$gs_name = $_FILES['file']['tmp_name'];
$file = file_get_contents($gs_name);
$bucketName = 'xxxxxx.appspot.com';
$kdir = dirname(getcwd(), 2);
$storage = new StorageClient([
'keyFile' => json_decode(file_get_contents($kdir . DIRECTORY_SEPARATOR . 'xxxxxx.json'), true),
'projectId' => 'xxxxxx'
]);
$bucket = $storage->bucket($bucketName);
$bucket->upload($file, [
'name' => $filename
]);
}
}
Также имейте в виду, что вы можете использовать возвращаемое значение метода upload
, например:
$storage_object = $bucket->upload($file, ['name' => $filename]);
Для дальнейшей обработки .