Файл изображения, успешно загруженный с помощью приложения Google App Engine, не существует в корзине

У меня есть следующий код:

Я создаю URL для загрузки приложения, используя метод CloudStorageTools :: createUploadUrl () следующим образом:

require_once 'google/appengine/api/cloud_storage
/CloudStorageTools.php';
use google\appengine\api\cloud_storage\CloudStorageTools;

$options = [ 'gs_bucket_name' => 'myuserpics' ];
$upload_url =
CloudStorageTools::createUploadUrl('/upload_handler.php', $options);

Я использую вышеуказанный URL-адрес в качестве действия для формы, которую я использую для принятия загрузок, следующим образом:

<form action="<?php echo $upload_url?>"enctype="multipart/form-data"   method="post">
Files to upload: <br>
<input type="file" name="uploaded_files" size="40">
<input type="submit" value="Send">
</form>

Ниже приводится содержимое файла upload_handler.php:

<?php
var_dump($_FILES);
?>

Я начинаю загрузку по указанному выше URL-адресу в течение 10 минут после его создания и получаю следующий вывод:

array(1) {
["userfile"]=> array(5) {
["name"]=> array(1) {
[0]=>   string(11) "fashion.jpg"}
["type"]=> array(1) {
[0]=> string(10) "image/jpeg"}
["tmp_name"]=> array(1) {
[0]=> string(200) "gs://myuserpics/***VERY LONG STRING***"}
["error"]=> array(1) {
[0]=> int(0)
} ["size"]=> array(1) {
[0]=> int(59527)
}
}
}

Разрешения, установленные для сегмента «myuserpics», являются разрешениями по умолчанию.

Когда я смотрю в ведро, я не вижу загруженное изображение.

Из консоли разработчиков Google я могу загрузить изображение, а затем увидеть его в корзине. Однако, если изображение загружено из приложения, я не вижу его в корзине. Что я делаю неправильно?

0

Решение

Ты звонил move_uploaded_file во время выполнения скрипта переместить файл из временного имени файла GCS?

В конце выполнения скрипта все временные файлы (например, $ _FILES [‘userfile’] [‘tmp_name’]) собираются и удаляются из корзины.

1

Другие решения

Эта проблема:

В моем коде после загрузки изображения я сразу же отображаю его и под ним предоставляю пользователю форму для заполнения заголовка изображения. После того как пользователь отправит форму, я переименую изображение и сохраню его новое имя и заголовок в базе данных. Эта процедура работала хорошо больше года до этой недели.

Решение:

Как только изображение загружено, я переименовываю его перед отображением вместе с соответствующей формой.

Заключение:

PHP или GAE внесли изменения, которые приводят к тому, что «сборка мусора» происходит намного быстрее, чем раньше. Если это не так, то почему я больше не могу ждать, пока пользователь отправит форму, прежде чем переименовать изображение?

Примечание: я не использую move_uploaded_file, как предложено ранее, потому что я не хочу менять местоположение изображения.

0

По вопросам рекламы [email protected]