Con HTML, ¿cómo limito qué tipo de archivos se pueden cargar?
Para facilitar la experiencia del usuario, quiero limitar la carga de archivos para que sean solo imágenes (jpeg, gif, png).
<form method="post" action="..." enctype="multipart/form-data">
<label for="image">Photo</label>
<input name="image" type="file" />
</form>
html
image
upload
file-upload
JacobT
fuente
fuente
Respuestas:
HTML5 dice
<input type="file" accept="image/*">
. Por supuesto, nunca confíe en la validación del lado del cliente: siempre verifique nuevamente en el lado del servidor ...fuente
La entrada de archivo HTML5 tiene un atributo de aceptación y también un atributo múltiple. Mediante el uso de múltiples atributos, puede cargar varias imágenes en una instancia.
También puede limitar varios tipos de mime.
y otra forma de verificar el tipo mime usando el objeto de archivo.
El objeto de archivo le da nombre, tamaño y tipo.
También puede restringir que el usuario cargue algunos tipos de archivos mediante el código anterior.
fuente
image/*|audio/*|video/*
no funciona para mí, debería estar separado por comas parece:image/*,video/mp4,.txt
Editado
Si las cosas fueran como DEBEN ser, puede hacerlo a través del atributo "Aceptar".
http://www.webmasterworld.com/forum21/6310.htm
Sin embargo, los navegadores ignoran esto, por lo que esto es irrelevante. La respuesta corta es, no creo que haya una manera de hacerlo en HTML. Tendría que verificarlo en el lado del servidor.
La siguiente publicación anterior tiene información que podría ayudarlo con alternativas.
Atributo 'aceptar' de entrada de archivo: ¿es útil?
fuente
Aquí está el HTML para cargar imágenes. Por defecto mostrará los archivos de imagen solo en la ventana de navegación porque hemos puesto
accept="image/*"
. Pero aún podemos cambiarlo desde el menú desplegable y mostrará todos los archivos. Entonces, la parte Javascript valida si el archivo seleccionado es o no una imagen real.Aquí, en el evento de cambio, primero verificamos el tamaño de la imagen. Y en la segunda
if
condición, verificamos si es o no un archivo de imagen.this.files[0].type.indexOf("image")
será-1
si no es un archivo de imagen.fuente
Solo puede hacer esto de forma segura en el lado del servidor. El uso del atributo "aceptar" es bueno, pero también debe validarse en el lado del servidor para que los usuarios no puedan acceder a su script sin esa limitación.
Le sugiero que: descarte cualquier archivo que no sea de imagen, advierta al usuario y vuelva a mostrar el formulario.
fuente
Ahora en la parte html
este código verificará si el archivo cargado es un archivo jpg o no y restringe la carga de otros tipos
fuente
Finalmente, el filtro que se muestra en la ventana Examinar lo establece el navegador. Puede especificar todos los filtros que desee en el atributo Aceptar, pero no tiene garantía de que el navegador de su usuario se adhiera a él.
Su mejor opción es hacer algún tipo de filtrado en el back-end del servidor.
fuente
Verifique un proyecto llamado Uploadify. http://www.uploadify.com/
Es un cargador de archivos basado en Flash + jQuery. Esto utiliza el cuadro de diálogo de selección de archivos de Flash, que le brinda la capacidad de filtrar tipos de archivos, seleccionar varios archivos al mismo tiempo, etc.
fuente