Вы можете легко хранить данные изображения в сеансе как базовые. На рабочем сервере у вас должно быть достаточно оперативной памяти.
Моему приложению требовалось до 40 МБ из 4 изображений / приложений для обновления и изменения перед установкой в mongoDB.
(Базовое кодирование увеличивает размер изображения в 1,3 раза.)
$tmpNameSS1 = $_FILES["screenshot1"]["tmp_name"];
$fp = fopen($tmpNameSS1, 'r');
$rawDataSS1 = fread($fp, filesize($tmpNameSS1));
fclose($fp);
$SS1FileName = $_FILES["screenshot1"]["name"];
$encodedSS1Data = base64_encode($rawDataSS1);
registry::update('sCreateSS1Name', $SS1FileName);
registry::update('sCreateSS1Data', $encodedSS1Data);
Случай будет: у вас есть несколько изображений для загрузки и проверка клиента и сервера для размера и типа. Это быстрее получить из сессии.
После помещения в БД нулевой переменной, содержащей изображение.
Браузер покажет показать это изображение с:
<img src="data:image/;base64,<?php echo registry::get('sCreateSS1Data'); ?>"/>
Вы можете обновить сеанс для изображения с пустой строкой после того, как код достигнет конца блока. Типичным случаем является обновление поля формы с проверкой и когда пользователь хочет изменить текст. Вы также хотите показать, какое изображение было загружено между этими неудачными обновлениями. Если вы хотите сохранить в оба конца (желательно), сохраните данные в течение некоторых моментов в сеансе и очистите это значение после того, как код завершится.