Я видел кучу вопросов, задающих одно и то же, но я не могу понять, в чем здесь проблема. Я пытаюсь загрузить файл в Google Cloud Storage через PHP, ajax и HTML:
PHP Файл
<?php
require_once 'vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
if(isset($_FILES['file'])){
$errors= array();
// Authentication with Google Cloud Platform
$client = new StorageClient(['keyFilePath' => 'qpack-325-13-9bc27ee4320d.json']);
$bucket = $client->bucket('qpack-13-img');
// Upload a file to the bucket.
$bucket->upload(
fopen($_FILES['file']['tmp_name'], 'r')
);
}
?>
JQuery / Ajax:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).on('submit', '#imageUpload', function (e) {
e.preventDefault();
var data = new FormData($('#imageUpload').get(0));
$.ajax({
type: 'POST',
url: 'config.php',
data: data,
processData: false,
contentType: false,
success: function ($data) {
console.log('Succcess');
$('#success').attr('hidden', false);
}
});
});
</script>
И HTML:
<form id="imageUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">Use this photo</button>
</form>
Но это не сработает! Он не выдает никаких ошибок, ajax Журналы вызовов «Успех», но ничего не загружается в корзину. Я дал разрешения для всех пользователей Storage Object Viewer, и я тестирую его при развертывании, и все еще ничего. Я что-то упустил, потому что, похоже, не могу понять это.
Я подумал, что, может быть, это как-то связано с app.yaml, поэтому я включил его сюда:
runtime: php
env: flex
runtime_config:
document_root: .
# [START gae_flex_storage_yaml]
env_variables:
GOOGLE_STORAGE_BUCKET: "***"
# [END gae_flex_storage_yaml]