¿Hay alguna posibilidad de detectar cada selección de archivo que el usuario hizo para un elemento HTML inputde tipo file?
Esto se preguntó muchas veces antes, pero el onchangeevento generalmente propuesto no se dispara si el usuario selecciona el mismo archivo nuevamente.
javascript
html
forms
dom-events
Dronus
fuente
fuente

inputvalor de s en '' después de hacer algo con el archivo. Pero eso también eliminaría el nombre de archivo visible. Sin embargo, eso puede estar bien, ya que el archivo se procesa realmente y el resultado de esa acción puede aparecer en otro lugar.fileentradaonchangeno se parece.Respuestas:
Establezca el valor de
inputanullen cadaonclickevento. Esto restablecerá elinputvalor de 's y activará elonchangeevento incluso si se selecciona la misma ruta.Aquí hay una DEMO .
Nota: es normal si su archivo tiene el prefijo 'C: \ fakepath \'. Esa es una característica de seguridad que impide que JavaScript conozca la ruta absoluta del archivo. El navegador aún lo sabe internamente.
fuente
this.value = nullal finalonchangeporque es posible activar un elemento de entrada sin hacer clic en él (usando el teclado). Puede almacenarinput.filessi necesita consultarlo más tarde.this.value=null;solo es necesario para Chrome, Firefox funcionará bien solo conreturn false;Aquí hay un violín
fuente
En este artículo, bajo el título "Uso de entrada de formulario para seleccionar"
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Agrega un detector de eventos para 'cambiar', pero lo probé y se dispara incluso si elige el mismo archivo y no si cancela.
fuente
changeevento solo se dispararía en los cambios de nombre de archivo.Use el evento onClick para borrar el valor de la entrada objetivo, cada vez que el usuario hace clic en el campo. Esto asegura que el evento onChange se activará también para el mismo archivo. Trabajó para mi :)
Usando TypeScript
fuente
Haga lo que quiera hacer después de que el archivo se cargue correctamente. Justo después de completar el procesamiento de su archivo, establezca el valor del control de archivo en una cadena en blanco. Entonces, el .change () siempre se llamará incluso si el nombre del archivo cambia o no. por ejemplo, puedes hacer esto y funcionó para mí como encanto
fuente
fuente
Borrar el valor del índice 0 de entrada funcionó para mí . Por favor, intente el siguiente código, espero que esto funcione (AngularJs).
fuente