HTML Input = "archivo" Aceptar Atributo Tipo de archivo (CSV)
Esperaba que alguien me pudiera ayudar.
Tengo un objeto de carga de archivos en mi página:
<input type="file" ID="fileSelect" />
Con los siguientes archivos de excel en mi escritorio:
- file1.xlsx
- file1.xls
- archivo.csv
Quiero que el archivo se cargue a ONLY mostrar .xlsx
, .xls
, & .csv
archivos.
Usando el atributo accept
, encontré que estos tipos de contenido se encargaban de .xlsx
& .xls
extensiones...
accept
= aplicación / vnd.openxmlformats-officedocument.spreadsheetml.hoja (.XLSX)
accept
= aplicación / vnd. ms-excel (.XLS)
Sin embargo, no puedo encontrar el tipo de contenido correcto para un archivo CSV de Excel! Alguna sugerencia?
EJEMPLO: http://jsfiddle.net/LzLcZ /
9 answers
Bueno, esto es vergonzoso... Encontré la solución que estaba buscando y no podía ser más simple. He utilizado el siguiente código para obtener el resultado deseado. Espero que esto ayude a alguien en el futuro. Gracias a todos por su ayuda.
<input id="fileSelect" type="file" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
Tipos de aceptación válidos:
Para Archivos CSV (.csv), use:
<input type="file" accept=".csv" />
For Excel Files 97-2003 (.xls), use:
<input type="file" accept="application/vnd.ms-excel" />
Para Archivos de Excel 2007+ (.xlsx), uso:
<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
Para Archivos de texto (.txt) uso:
<input type="file" accept="text/plain" />
Para Archivos de imagen (.png/.jpg/etc), use:
<input type="file" accept="image/*" />
Para Archivos HTML (.htm,.html), use:
<input type="file" accept="text/html" />
Para Archivos de vídeo (.avi, .mpg, .mpeg,. mp4), uso:
<input type="file" accept="video/*" />
Para Archivos de audio (. mp3, .wav, etc), uso:
<input type="file" accept="audio/*" />
Para Archivos PDF , uso:
<input type="file" accept=".pdf" />
DEMO:
http://jsfiddle.net/dirtyd77/LzLcZ/144 /
NOTA:
Si está tratando de mostrar archivos CSV de Excel (.csv
), haga NO uso:
text/csv
application/csv
-
text/comma-separated-values
(solo funciona en Ópera).
Si está tratando de mostrar un tipo de archivo particular (por ejemplo, un WAV
o PDF
), entonces esto casi siempre trabajo...
<input type="file" accept=".FILETYPE" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-30 05:15:08
En estos días solo puede usar la extensión de archivo
<input type="file" ID="fileSelect" accept=".xlsx, .xls, .csv"/>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-19 20:21:48
Dom este atributo es muy antiguo y no es aceptado en los navegadores modernos que yo sepa, Pero aquí hay una alternativa a él, Pruebe esto
<script type="text/javascript" language="javascript">
function checkfile(sender) {
var validExts = new Array(".xlsx", ".xls", ".csv");
var fileExt = sender.value;
fileExt = fileExt.substring(fileExt.lastIndexOf('.'));
if (validExts.indexOf(fileExt) < 0) {
alert("Invalid file selected, valid files are of " +
validExts.toString() + " types.");
return false;
}
else return true;
}
</script>
<input type="file" id="file" onchange="checkfile(this);" />
Supongo que le ayudará, por supuesto, puede cambiar este script de acuerdo a sus necesidades.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-06 17:54:04
He usado text/comma-separated-values
para el tipo mime CSV en el atributo accept y funciona bien en Opera. Intentado text/csv
sin suerte.
Algunos otros tipos MIME para CSV si los sugeridos no funcionan:
- valores de texto/separados por comas
- texto / csv
- aplicación/csv
- aplicación/excel
- application / vnd. ms-excel
- application / vnd.msexcel
- text / anytext
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-25 13:59:18
Esto no funcionó para mí bajo Safari 10:
<input type="file" accept=".csv" />
Tuve que escribir esto en su lugar:
<input type="file" accept="text/csv" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-04 08:01:16
Puede saber el tipo de contenido correcto para cualquier archivo simplemente haciendo lo siguiente:
1) Seleccione el archivo interesado,
2) Y ejecutar en la consola esto:
console.log($('.file-input')[0].files[0].type);
También puede establecer el atributo "múltiple" para que su entrada verifique el tipo de contenido para varios archivos a la vez y haga lo siguiente:
for (var i = 0; i < $('.file-input')[0].files.length; i++){
console.log($('.file-input')[0].files[i].type);
}
El atributo accept tiene algunos problemas con múltiples atributos y no funciona correctamente en este caso.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 11:57:26
He modificado la solución de @yogi. La adición es que cuando el archivo es de formato incorrecto restablezco el valor del elemento de entrada.
function checkFile(sender, validExts) {
var fileExt = sender.value;
fileExt = fileExt.substring(fileExt.lastIndexOf('.'));
if (validExts.indexOf(fileExt) < 0 && fileExt != "") {
alert("Invalid file selected, valid files are of " +
validExts.toString() + " types.");
$(sender).val("");
return false;
}
else return true;
}
Tengo una compilación de verificación personalizada, porque en la ventana abrir archivo el usuario todavía puede elegir las opciones "Todos los archivos ('*')", independientemente de si establezco explícitamente el atributo accept en el elemento de entrada.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-30 17:24:29
Ahora puede usar el nuevo atributo de validación de entrada html5 pattern=".+\.(xlsx|xls|csv)"
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-15 10:20:22
Usar expresiones regulares sería más rápido
function checkIsExcel(file) {
if ((!/.*\.xlsx$/.test(file.name)) && (!/.*\.xls$/.test(file.name)) && (!/.*\.csv$/.test(file.name))) {
return false;
}
return true;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-27 03:18:47