Задать вопрос
@My1Name

Как установить имя (value) для input type=file?

На странице html есть форма, в которую нужно установить значения после загрузки страницы. А именно - имена изображений если те в свою очередь есть.
HTML
<form id="pictures" method="POST" enctype="multipart/form-data">
<div style="display:-webkit-box;">
<div id="image-1" class="U-image"><span class="trash-image glyphicon glyphicon-trash" onclick="removeImage(1)"> </span></div>
<input type="file" id="1" style="display:none;" name="image" accept="image/png, image/jpeg, image/gif">
<div id="image-2" class="U-image"><span class="trash-image glyphicon glyphicon-trash" onclick="removeImage(2)"> </span></div>
<input type="file" id="2" style="display:none;" name="image" accept="image/png, image/jpeg, image/gif">
<div id="image-3" class="U-image"><span class="trash-image glyphicon glyphicon-trash" onclick="removeImage(3)"> </span></div>
<input type="file" id="3" style="display:none;" name="image" accept="image/png, image/jpeg, image/gif">
<div id="image-4" class="U-image"><span class="trash-image glyphicon glyphicon-trash" onclick="removeImage(4)"> </span></div>
<input type="file" id="4" style="display:none;" name="image" accept="image/png, image/jpeg, image/gif">
<button type="submit" class="btn btn-default" style="float:right;"><b>Ok!</b></button>
</div>
</form>

Нужно проверить имена файлов на сервере, а приходят в лучшем случае пустые строки.
JS
$(window).ready(function(){
let items = $('#carousel').find('img').map(function(){ return $(this).attr('src'); }).get();
let sImg = $('#pictures');
for(x=1; x<items.length+1; x++){
	$(sImg).find('#image-'+x).css({'background-image': "url("+items[x-1]+")"});
	var fInput = $('#pictures #'+x);
	let f = 'S-'+x+'.jpg'; // имена задаются по факту наличия изображения.
	const fileTMP = new File (['Empty file'], f,{
		type : 'text/plain', lastModified : new Date(),
	});
	const dataTransfer = new DataTransfer();
	dataTransfer.items.add(fileTMP);
	fInput.files = dataTransfer.files;
	alert(fInput); 	    // [object Object]
	alert(fInput.name); // undefined!!
	}
}

Как установить имя для input type="file" ?
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 1
@My1Name Автор вопроса
var x = 1;
const fInput = document.querySelectorAll('input[type="file"]');
Array.from(fInput).forEach(function(el){
	if(el.getAttribute('id')==x && x<=items.length){
	   let f = items[x-1];
	   let fileTMP = new File (['Empty file'], f,{
	      type : 'text/plain', lastModified : new Date(),
	   });
	   const dataTransfer = new DataTransfer();
	   dataTransfer.items.add(fileTMP);
	   el.files = dataTransfer.files;
	   if(el.webkitEntries.length)
	     el.dataset.file = '{dataTransfer.files[0].name}';
	   x++;
	}
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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