Я много искал (и даже нашел несколько полезных ссылок, подобных этой Загрузите файл в Google Cloud Storage Bucket с PHP и Ajax ), но не смог заставить его работать.Мне нужно загрузить текстовый файл в мое хранилище облачного хранилища Google.
Вот мой код:
gcp_storage.php:
<?php
if(isset($_FILES['file'])){
$errors= array();
// Authentication with Google Cloud Platform
$client = new StorageClient(['keyFilePath' => 'cloudtest-2412**-a66e94ba56**.json']);
$bucket = $client->bucket('cloudtest-2412**.appspot.com ');
// Upload a file to the bucket.
$file = pathinfo($_FILES['file']['name']);
$prefix = uniqid('prefix_', true); //generate random string to avoid name conflicts
$filename = $prefix . "." . $file['extension'];
$bucket->upload(
fopen($_FILES['file']['tmp_name'], 'r'),
['name' => $filename]
);
}
?>
html и js:
<html>
<form id="fileForm" action="" method="post" enctype="multipart/form-data">
<div class="form-row">
<br/>
<div class="form-group">
<label for="textFile">Text File: </label>
<br/>
<input type="file" name="file" id="textFile">
</div>
</div>
<br>
<button type="submit" class="btn btn-lg btn-primary"> Upload </button>
</form>
</html>
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
<script>
$(document).on('submit', '#fileForm', function (e) {
e.preventDefault();
var data = new FormData($('#fileForm').get(0));
$.ajax({
type: 'POST',
url: 'gcp_storage.php',
data: data,
processData: false,
contentType: false,
success: function ($data) {
console.log('Succcess');
$('#success').attr('hidden', false);
}
});
});
</script>
* На моей консоли показывается успех, но когда я захожу в корзину в облаке Google, ничего не появляется ...
* Я скачалфайл .json со страницы IAM (файл находится в том же каталоге, что и другой файл)
РЕДАКТИРОВАТЬ 1:
Don 'Не знаю, поможет ли это, если я уберу use Google\Cloud\Storage\StorageClient
, PHP выдаст мне ошибку Class 'StorageClient' not found in /base/data/home/apps/i
(когда я возвращаю код использования, он просто выдает ошибку 500, см. ниже)
У меня естьЯ изменил код и установил точки останова, чтобы узнать, откуда я искал ошибку 500.Если я удаляю все из моего PHP-файла и просто ставлю echo "Test"
, он работает нормально.
После установки некоторых точек останова в исходном коде я обнаружил, что ошибка 500 возникает из следующих строк кода:
$client = new StorageClient(['keyFilePath' => 'cloudtest-2412**-a66e94ba56**.json']);
$bucket = $client->bucket('cloudtest-2412**.appspot.com');
(Код аутентификации)
Есть предложения?
Спасибо