Valor establecido dinámicamente de una input de file

¿Hay alguna manera de establecer el valor de una input de file ( <input type="file" /> ) o está todo bloqueado por security? Intento utilizar los files abiertos de google gears para hacer un simple multi-cargador.

Nota:

La (s) respuesta (s) a continuación reflejan el estado de los browseres henetworkingados en 2009. Ahora puede establecer el valor del elemento de input de file dinámicamente / programáticamente usando JavaScript en 2017.

Consulte la respuesta en esta pregunta para get detalles y una demostración:
Cómo establecer el valor de input de file de manera programática (es decir, cuando se arrastran files)

No es posible cambiar dinámicamente el valor de un campo de file; de lo contrario, podría establecerlo en "c: \ yourfile" y robar files con mucha facilidad.

Sin embargo, hay muchas soluciones para un sistema de carga múltiple. Supongo que quieres tener un dialog abierto de selección múltiple.

Tal vez eche un vistazo a http://www.plupload.com/ – es una solución muy flexible para múltiples cargas de files, y admite zonas de colocación, etc.

Estoy trabajando en una aplicación angular js, y he encontrado un problema similar. Lo que hice fue mostrar la image de la database, luego creé un button para eliminar o mantener la image actual. Si el usuario decidió mantener la image actual, cambié el atributo ng-submit a otra function que no requiere validation de image, y actualicé el logging en el file db sin tocar el nombre original de la ruta de la image. La function de quitar image también cambió el valor del atributo ng-submit a una function que envía el formulario e incluye la validation y carga de la image. También un poco de javascript para deslizar la vista para cargar una nueva image.

Tuve un problema similar, luego intenté escribir esto desde JavaScript y ¡funciona! : referenceToYourInputFile.value = "" ;

Terminé haciendo algo así para AngularJS en caso de que alguien tropiece con esta pregunta:

 const imageElem = angular.element('#awardImg'); if (imageElem[0].files[0]) vm.award.imageElem = imageElem; vm.award.image = imageElem[0].files[0]; 

Y entonces:

 if (vm.award.imageElem) $('#awardImg').replaceWith(vm.award.imageElem); delete vm.award.imageElem;