dzheka3d
@dzheka3d

Ajax загрузка картинок, как записывать в базу?

Создаю страницу загрузки новостей. Картинки в новость будут добавляться через ajax, т.е. до того, как будет загружена сама новость. Как в этом случае обычно поступают с записью в базу данных. Точнее как связать в базе уже загруженную картинку с еще не загруженной новостью?
  • Вопрос задан
  • 795 просмотров
Решения вопроса 1
@Kostik_1993
Fullstack Web Developer | PHP | Laravel | Vue.js
Я делаю так.
Для товаров объявлений и прочей лабуды грузим фал во временную папку и отдаем имя файла которое вставляем на странице в скрытый инпут. Дале после сабмита создаем запись и получаем ее id. перебераем массив наших инпутов и выдергиваем из tmp нужные файлы и переносим их в нужную дирректории одновременно записывая в БД id поста и имя этой самой картинки.

Для новостей лучше также создавать скрытые инпуты. также кладем наши картинки в tmp чтоб во время редактирования нашей новости мы смогли их вставить и видеть. Некоторые преобразуют их в base64 но это очень не удобно при редактировании новости в режиме HTML. После сабмита делаем аналогично постам, но при это делаем в тексте реплейс с tmp на имя дирректории или сервера в которую положили файлы
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@IceJOKER
Web/Android developer
$_SESSION | $_COOKIE maybe?
Ответ написан
Комментировать
AlexZaharow
@AlexZaharow
O Keep Clear O
Смотря что за редактор у новости. Я на CKEditor-е как-то сделал без предзагрузки изображения в базу. см. ckeditor.com/addon/image. Может удастся сделать нечто подобное?
Ответ написан
Комментировать
DVamp1r3
@DVamp1r3
Java/PHP программист
А зачем отдавать изображение и саму новость отдельно? Просто подгружайте при выборе файла изображение в контейнер, а при сабмите отдавайте все сразу.
Ответ написан
Комментировать
customtema
@customtema
arint.ru
Картинку - в ФС, сведения о ней (путь, mime, размер) - в таблицу БД.

Если картинки вложены в текст статей, тогда достаточно вставить тег в текст.

Пример для CKEditor
function image_callback(response)
{
	if (response.is_image)
	{
		var thumb_name = response.file;
		var full_name = thumb_name.replace('_thumb','');
		$(response.target_field).val(response.file);
		var image = $(response.target_image);
		if (image.length)
		{
			image.attr('src',response.file);
		}
		else
		{
			var image_id = response.target_image.replace('#','');
			$(response.target_field).before('<img src="' + response.file + '" id="' + image_id + '"/>');
		}
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы