Подтвердить что ты не робот

Динамически заданное значение ввода файла

Есть ли способ установить значение ввода файла (<input type="file" />) или это все заблокировано для безопасности? Я пытаюсь использовать openFiles google gears, чтобы создать простой многозадачник.

Примечание:

Ниже приведен ответ, который отражает состояние устаревших браузеров в 2009 году. Теперь вы можете реально установить значение элемента ввода файла динамически/программно с помощью JavaScript в 2017 году.

См. ответ в этом вопросе для получения подробной информации, а также демо:
Как установить значение ввода файла программно (например: при перетаскивании файлов)?

4b9b3361

Ответ 1

Невозможно динамически изменять значение поля файла, иначе вы можете установить его в "c:\yourfile" и легко удалить файлы.

Однако существует много решений для многозадачной системы. Я предполагаю, что вы хотите открыть диалоговое окно с несколькими выборами.

Возможно, посмотрите http://www.plupload.com/ - это очень гибкое решение для нескольких загрузок файлов и поддерживает зоны сброса e.t.c.

Ответ 2

Я работаю над приложением angular js и havecome по аналогичной проблеме. То, что я сделал, это отобразить изображение из db, а затем создать кнопку для удаления или сохранения текущего изображения. Если пользователь решил сохранить текущий образ, я изменил атрибут ng-submit на другую функцию, которая не требует проверки изображения, и обновила запись в db, не касаясь исходного пути пути к изображению. Функция удаления изображения также изменила значение атрибута ng-submit обратно на функцию, которая отправляет форму и включает в себя проверку и загрузку изображений. Также немного javascript, чтобы вставить в представление, чтобы загрузить новое изображение.

Ответ 3

У меня была схожая проблема, тогда я попытался написать это с JavaScript, и она работает!: referenceToYourInputFile.value = "" ;

Ответ 4

В итоге я решил сделать что-то подобное для 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;