@Andrei258

Как в input file добавит значение из внешнего источника?

Здравствуйте, по этому тему я очень много раз поискал но ничего не нашел в инете, везде написано, что это не возможно.

У меня есть блог где надо реализовать изменение статьи и там очень много картинок и поэтому мне нужно из сервера уже добавленные картинки загрузить в input.

Скажите пожалуйста как все это можно реализовать?
  • Вопрос задан
  • 283 просмотра
Решения вопроса 2
@artem-dainov
Php, java, js. Boot spring, jquery, git
Если у вас картинки на вашем сервере, то проще всего сделать скрипт, который будет делать обзор и нажимая на одну из картинок, которая вам нужна, её идентификатор будет добавляться в input type='hidden'
Если картинка с другого сервера, к которому у вас есть доступ только по http, то только руками копировать url и вставлять в текстовый input
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Если картинка лежит внутри вашего сайта, то вы можете вставить его в поле input следующим образом:
async function pasteFile(file_link, input_selector) {
	
	var blob = { type: 'html' };
	
	do {
		
		try {
			
			blob = await (await fetch(file_link)).blob();
			
			if (blob.type.includes('html')) {
				
				console.log('Не удалось скачать файл с сервера, вместо файла получена html-страница', blob);
				await new Promise(function(s) { setTimeout(s, 1000); });
				
			}
			
		}
		
		catch (err) {
			
			console.log('Не удалось скачать файл с сервера', err);
			await new Promise(function(s) { setTimeout(s, 1000); });
			
		}
		
	} while (blob.type.includes('html'));
	
	var dt  = new DataTransfer();
	dt.items.add(new File([blob], file_link.split('/').pop(), { type: blob.type }));
	document.querySelector(input_selector).files = dt.files;
	
	console.log('Файл успешно вставлен в поле', dt.files);
	
}

Вам необходимо вызвать функцию pasteFile(file_link, input_selector) передав первым параметром ссылку на картинку, а вторым параметром CSS-селектор указывающий на поле input в которое требуется воткнуть картинку.

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

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

Похожие вопросы