Entrée HTML = “fichier” Accepter le type de fichier d’atsortingbut (CSV)

J’espérais que quelqu’un puisse m’aider.

J’ai un object de téléchargement de fichier sur ma page:

 

avec les fichiers Excel suivants sur mon bureau:

  1. fichier1.xlsx
  2. fichier1.xls
  3. fichier.csv

Je souhaite que le téléchargement du fichier affiche UNIQUEMENT les fichiers .xlsx , .xls et .csv .

En utilisant l’atsortingbut accept , j’ai trouvé que ces types de contenu prenaient en charge les extensions .xlsx & .xls

accept = application / vnd.openxmlformats-officedocument.spreadsheetml.sheet (.XLSX)

accept = application / vnd.ms-excel (.XLS)

Cependant, je ne peux pas trouver le type de contenu correct pour un fichier CSV Excel! Aucune suggestion?

EXEMPLE: http://jsfiddle.net/LzLcZ/

    Eh bien, c’est embarrassant … J’ai trouvé la solution que je cherchais et cela ne pouvait pas être plus simple. J’ai utilisé le code suivant pour obtenir le résultat souhaité. J’espère que cela aidera quelqu’un dans le futur. Merci à tous pour votre aide.

      

    Types d’acceptation valides:

    Pour les fichiers CSV (.csv), utilisez:

      

    Pour les fichiers Excel 97-2003 (.xls), utilisez:

      

    Pour les fichiers Excel 2007+ (.xlsx), utilisez:

      

    Pour les fichiers texte (.txt), utilisez:

      

    Pour les fichiers image (.png / .jpg / etc), utilisez:

      

    Pour les fichiers HTML (.htm, .html), utilisez:

      

    Pour les fichiers vidéo (.avi, .mpg, .mpeg, .mp4), utilisez:

      

    Pour les fichiers audio (.mp3, .wav, etc.), utilisez:

      

    Pour les fichiers PDF , utilisez:

      

    DEMO:
    http://jsfiddle.net/dirtyd77/LzLcZ/144/


    REMARQUE:

    Si vous essayez d’afficher des fichiers CSV Excel ( .csv ), n’utilisez PAS :

    • text/csv
    • application/csv
    • text/comma-separated-values (ne fonctionne que dans Opera ).

    Si vous essayez d’afficher un type de fichier particulier (par exemple, un PDF WAV ou un PDF ), cela fonctionnera presque toujours …

       

    Ces jours-ci, vous pouvez simplement utiliser l’extension de fichier

      

    Dom cet atsortingbut est très ancien et n’est pas accepté dans les navigateurs modernes pour autant que je sache, mais voici une alternative, essayez ceci

       

    Je suppose que cela vous aidera bien sûr, vous pouvez changer ce script en fonction de vos besoins.

    J’ai utilisé text/comma-separated-values pour le type mime CSV dans l’atsortingbut accept et cela fonctionne très bien dans Opera. Essayé text/csv sans chance.

    Certains autres types MIME pour CSV si les suggestions ne fonctionnent pas:

    • valeurs séparées par du texte / des virgules
    • texte / csv
    • application / csv
    • application / excel
    • application / vnd.ms-excel
    • application / vnd.msexcel
    • text / anytext

    Source: http://filext.com/file-extension/CSV

    Cela n’a pas fonctionné pour moi sous Safari 10:

      

    Je devais écrire ceci à la place:

      

    Vous pouvez connaître le type de contenu correct pour tout fichier en procédant comme suit:

    1) Sélectionnez le fichier intéressé,

    2) Et lancer en console ceci:

     console.log($('.file-input')[0].files[0].type); 

    Vous pouvez également définir l’atsortingbut “multiple” pour votre saisie pour vérifier le type de contenu de plusieurs fichiers à la fois et effectuer ensuite:

     for (var i = 0; i < $('.file-input')[0].files.length; i++){ console.log($('.file-input')[0].files[i].type); } 

    L'atsortingbut accept a quelques problèmes avec plusieurs atsortingbuts et ne fonctionne pas correctement dans ce cas.

    J’ai modifié la solution de @yogi. L’ajout est que lorsque le fichier est de format incorrect, je réinitialise la valeur de l’élément d’entrée.

     function checkFile(sender, validExts) { var fileExt = sender.value; fileExt = fileExt.subssortingng(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; } 

    J'ai une version de vérification personnalisée, car dans la fenêtre de fichier ouvert, l'utilisateur peut toujours choisir les options "Tous les fichiers ('*')", que je définisse explicitement l'atsortingbut accept dans l'élément input.

    Vous pouvez maintenant utiliser le nouvel atsortingbut de validation des entrées html5 pattern=".+\.(xlsx|xls|csv)" .

    utiliser regex serait plus rapide

      function checkIsExcel(file) { if ((!/.*\.xlsx$/.test(file.name)) && (!/.*\.xls$/.test(file.name)) && (!/.*\.csv$/.test(file.name))) { return false; } return true; }