Tengo un objeto de carga de archivos en mi página:
<input type="file" ID="fileSelect" />
con los siguientes archivos excel en mi escritorio:
- archivo.csv
Quiero que la carga de archivos muestre SÓLO los archivos .xlsx
, .xls
, & .csv
.
Usando el atributo accept
, he encontrado que estos tipos de contenido se encargan de las extensiones .xlsx
& .xls
...
accept
= application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (.XLSX)
accept
= application/vnd.ms-excel (.XLS)
Sin embargo, no puedo encontrar el tipo de contenido correcto para un archivo CSV de Excel. ¿Alguna sugerencia?
EJEMPLO: <
>Bueno esto es vergonzoso... He encontrado la solución que buscaba y no podía ser más sencilla. Usé el siguiente código para obtener el resultado deseado. Espero que esto ayude a alguien en el futuro. Gracias a todos por vuestra ayuda.
<input id="fileSelect" type="file" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
Para archivos CSV (.csv), utilice:
<input type="file" accept=".csv" />
Para Archivos Excel 97-2003 (.xls), utilice:
<input type="file" accept="application/vnd.ms-excel" />
Para Archivos Excel 2007+ (.xlsx), utilice:
<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
Para Archivos de texto (.txt) utilice:
<input type="file" accept="text/plain" />
Para Archivos de imagen (.png/.jpg/etc), utilice:
<input type="file" accept="image/*" />
Para Archivos HTML (.htm,.html), utilice:
<input type="file" accept="text/html" />
Para Archivos de vídeo (.avi, .mpg, .mpeg, .mp4), utilice:
<input type="file" accept="video/*" />
Para Archivos de audio (.mp3, .wav, etc), utilice:
<input type="file" accept="audio/*" />
Para Archivos PDF, utilice:
<input type="file" accept=".pdf" />
DEMO:
NOTA:
Si está intentando visualizar archivos CSV de Excel (.csv
), no utilice NOT:
text/csv
aplicación/csv
text/comma-separated-values
(sólo funciona en Opera).Si estás tratando de mostrar un tipo de archivo particular (por ejemplo, un WAV
o un PDF
), entonces esto casi siempre funcionará...
<input type="file" accept=".FILETYPE" />
Dom este atributo es muy antiguo y no se acepta en los navegadores modernos por lo que sé, Pero aquí es una alternativa a ella, 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 te ayudará, por supuesto puedes cambiar este script de acuerdo a tus necesidades.
He utilizado text/comma-separated-values
para el tipo mime de CSV en el atributo accept y funciona bien en Opera. He probado con text/csv
sin suerte.
Algunos otros MIME-Type para CSV si los sugeridos no funcionan: