Динамически установить значение файла ввода
Есть ли способ установить значение файла ввода (<input type="file" />
) или это все заблокировано для безопасности? Я пытаюсь использовать openFiles от Google gears, чтобы сделать простой мультизагрузчик.
Замечания:
Ответы ниже отражают состояние устаревших браузеров в 2009 году. Теперь вы можете фактически установить значение элемента ввода файла динамически / программно, используя JavaScript в 2017 году.
Подробности см. В ответе на этот вопрос, а также в демоверсии:
Как установить значение входного файла программно (например, при перетаскивании файлов)?
4 ответа
Невозможно динамически изменить значение поля файла, в противном случае вы можете установить его в "c:\yourfile" и очень легко красть файлы.
Однако существует много решений для мультизагрузочной системы. Я предполагаю, что вы хотите иметь открытый диалог с множественным выбором.
Возможно, взгляните на http://www.plupload.com/ - это очень гибкое решение для загрузки нескольких файлов, поддержка зон перетаскивания и т. Д.
Я работаю над угловым js-приложением и сталкиваюсь с подобной проблемой. Что я сделал, так это отобразил изображение из БД, затем создал кнопку для удаления или сохранения текущего изображения. Если пользователь решил сохранить текущее изображение, я изменил атрибут ng-submit на другую функцию, которая не требует проверки изображения, и обновил запись в БД, не касаясь исходного пути к изображению. Функция удаления изображения также изменила значение атрибута ng-submit обратно на функцию, которая отправляет форму и включает проверку изображения и загрузку. Также немного JavaScript, чтобы скользить в поле зрения, чтобы загрузить новое изображение.
Я закончил тем, что делал что-то подобное для AngularJS на тот случай, если кто-то наткнется на этот вопрос:
const imageElem = angular.element('#awardImg');
if (imageElem[0].files[0])
vm.award.imageElem = imageElem;
vm.award.image = imageElem[0].files[0];
А потом:
if (vm.award.imageElem)
$('#awardImg').replaceWith(vm.award.imageElem);
delete vm.award.imageElem;
У меня была похожая проблема, затем я попытался написать это из JavaScript, и это работает!: referenceToYourInputFile.value = "" ;