runat net fileupload example code behind asp html webforms file-upload

html - net - c# upload file



Extensiones de filtro en formato HTML carga (7)

El atributo accept especifica una lista de tipos de contenido separados por comas (tipos MIME) que el destino del formulario procesará correctamente. Desafortunadamente, este atributo es ignorado por todos los navegadores principales, por lo que no afecta el diálogo de archivos del navegador de ninguna manera.

Esta pregunta ya tiene una respuesta aquí:

Tengo un formulario de carga de HTML simple, y quiero especificar una extensión predeterminada ("* .drp", por ejemplo). He leído que la forma de hacerlo es mediante el atributo ACCEPT de la etiqueta de entrada, pero no sé exactamente cómo hacerlo.

<form enctype="multipart/form-data" action="uploader.php" method="POST"> Upload DRP File: <input name="Upload Saved Replay" type="file" accept="*.drp"/><br /> <input type="submit" value="Upload File" /> </form>

Editar Sé que la validación es posible mediante javascript, pero me gustaría que el usuario solo vea los archivos ".drp" en su cuadro de diálogo emergente. Además, no me importa mucho la validación del lado del servidor en esta aplicación.


El atributo accept espera tipos MIME, no máscaras de archivo. Por ejemplo, para aceptar imágenes PNG, necesitaría accept = "image / png". Es posible que deba averiguar qué tipo de MIME el navegador considera que es su tipo de archivo, y usarlo en consecuencia. Sin embargo, dado que un archivo ''drp'' no parece estándar, es posible que deba aceptar un tipo MIME genérico.

Además, parece que la mayoría de los navegadores pueden no respetar este atributo.

La mejor forma de filtrar las cargas de archivos será en el lado del servidor. Esto es un inconveniente, ya que un usuario ocasional puede perder tiempo cargando un archivo solo para saber que eligió el incorrecto, pero al menos tendrá algún tipo de integridad de datos.

Alternativamente, puede optar por hacer una comprobación rápida con JavaScript antes de enviar el formulario. Simplemente verifique la extensión del valor del campo del archivo para ver si es ".drp". Probablemente este sea mucho más compatible que el atributo de aceptación.


No utilizaría este atributo ya que la mayoría de los navegadores lo ignoran, como señala CMS.

Por supuesto, utilice la validación del lado del cliente, pero solo junto con el lado del servidor. Cualquier validación del lado del cliente se puede redondear.

Poco tema, pero algunas personas verifican el tipo de contenido para validar el archivo cargado. Debe tener cuidado con esto ya que un atacante puede cambiarlo fácilmente y cargar un archivo php, por ejemplo. Vea el ejemplo en: http://www.scanit.be/uploads/php-file-upload.pdf


Otra solución con algunas líneas

function checkFile(i){ i = i.substr(i.length - 4, i.length).toLowerCase(); i = i.replace(''.'',''''); switch(i){ case ''jpg'': case ''jpeg'': case ''png'': case ''gif'': // do OK stuff break; default: // do error stuff break; } }


Para formatos específicos como el tuyo ".drp". Puedes pasarlo directamente en accept = ". Drp" funcionará para eso.

Pero sin " * "

<input name="Upload Saved Replay" type="file" accept=".drp" /> <br/>


Puedes hacerlo usando javascript. Tome el valor del campo de formulario en su función de envío, analice la extensión.

Puedes comenzar con algo como esto:

<form name="someform"enctype="multipart/form-data" action="uploader.php" method="POST"> <input type=file name="file1" /> <input type=button onclick="val()" value="xxxx" /> </form> <script> function val() { alert(document.someform.file1.value) } </script>

Estoy de acuerdo con alexmac: hágalo también desde el servidor.


Yo uso javascript para verificar la extensión del archivo. Aquí está mi código:

HTML

<input name="fileToUpload" type="file" onchange="check_file()" >

.. ..

javascript

function check_file(){ str=document.getElementById(''fileToUpload'').value.toUpperCase(); suffix=".JPG"; suffix2=".JPEG"; if(str.indexOf(suffix, str.length - suffix.length) == -1|| str.indexOf(suffix2, str.length - suffix2.length) == -1){ alert(''File type not allowed,/nAllowed file: *.jpg,*.jpeg''); document.getElementById(''fileToUpload'').value=''''; } }