HTML Input= "file" Accept atrybut Typ pliku (CSV)

Miałem nadzieję, że ktoś mi pomoże.

Mam na swojej stronie obiekt uploadu pliku:

<input type="file" ID="fileSelect" />

Z następującymi plikami Excela na moim pulpicie:

  1. file1.xlsx
  2. file1.xls
  3. plik.csv

Chcę, aby plik został przesłany do tylko pokaż .xlsx, .xls, & .csv pliki.

Używając atrybutu accept, znalazłem te typy treści .xlsx & .xls rozszerzenia...

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

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

Jednak nie mogę znaleźć odpowiedniego typu zawartości dla pliku CSV Excel! Jakieś sugestie?

Przykład: http://jsfiddle.net/LzLcZ/

Author: Ram, 2012-08-06

9 answers

To żenujące... Znalazłem rozwiązanie, którego szukałem i nie mogło być prostsze. Użyłem poniższego kodu, aby uzyskać pożądany rezultat. Mam nadzieję, że to pomoże komuś w przyszłości. Dziękuję wszystkim za pomoc.

<input id="fileSelect" type="file" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />  

Valid Accept Types:

For CSV files (.csv), użycie:

<input type="file" accept=".csv" />

Dla Plików Excel 97-2003 (.xls), użycie:

<input type="file" accept="application/vnd.ms-excel" />

Dla Plików Excel 2007+ (.xlsx), użycie:

<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />

Dla Plików Tekstowych (.txt) użycie:

<input type="file" accept="text/plain" />

Dla Plików Graficznych (..png/.jpg / etc), użycie:

<input type="file" accept="image/*" />

Dla plików HTML (.htm,html), użyj:

<input type="file" accept="text/html" />

Dla Plików Wideo (.avi,mpg,mpeg,. mp4), użycie:

<input type="file" accept="video/*" />

Dla plików Audio (. mp3, .wav, itp.), użycie:

<input type="file" accept="audio/*" />

Dla plików PDF , użycie:

<input type="file" accept=".pdf" /> 

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


Uwaga:

Jeśli próbujesz wyświetlić pliki Excel CSV (.csv), wykonaj Nie użycie:

  • text/csv
  • application/csv
  • text/comma-separated-values (działa tylko w Operze ).

Jeśli próbujesz wyświetlić konkretny typ pliku (na przykład WAV lub PDF), to prawie zawsze będzie to praca...

 <input type="file" accept=".FILETYPE" />
 910
Author: Dom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-30 05:15:08

W dzisiejszych czasach możesz po prostu użyć rozszerzenia pliku

<input type="file" ID="fileSelect" accept=".xlsx, .xls, .csv"/>
 55
Author: Big Money,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-19 20:21:48

Dom ten atrybut jest bardzo stary i nie jest akceptowany w nowoczesnych przeglądarkach, o ile wiem, ale tutaj jest alternatywa dla niego, spróbuj tego

<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);" />

Myślę, że to ci pomoże oczywiście możesz zmienić ten skrypt zgodnie z Twoimi potrzebami.

 33
Author: yogi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-06 17:54:04

Użyłem text/comma-separated-values do CSV mime-type w atrybucie accept i działa dobrze w Operze. Próbowałem text/csv bez powodzenia.

Niektóre inne typy MIME dla CSV, jeśli sugerowane nie działają:

  • wartości oddzielone przecinkami
  • tekst / csv
  • application / csv
  • application / excel
  • application / vnd. ms-excel
  • application / vnd.msexcel
  • tekst / anytext

Źródło: http://filext.com/file-extension/CSV

 8
Author: jaysponsored,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-25 13:59:18

To mi nie wyszło pod Safari 10:

<input type="file" accept=".csv" />

Musiałem napisać to zamiast:

<input type="file" accept="text/csv" />
 6
Author: trojan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-04 08:01:16

Możesz znać poprawny typ zawartości dla dowolnego pliku, wykonując następujące czynności:

1) wybierz interesujący plik,

2) i uruchom w konsoli to:

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

Możesz również ustawić atrybut "multiple" dla Twojego wejścia, aby sprawdzić typ zawartości dla kilku plików naraz i wykonać następny:

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

Atrybut accept ma pewne problemy z wieloma atrybutami i nie działa poprawnie w tym przypadku.

 3
Author: opiumind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 11:57:26

Zmodyfikowałem rozwiązanie @yogi. Dodatek polega na tym, że gdy plik ma nieprawidłowy format, zresetuję wartość elementu wejściowego.

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;
}

Mam wbudowaną weryfikację niestandardową, ponieważ w oknie open file użytkownik nadal może wybrać opcje "wszystkie pliki (' * ' )", niezależnie od tego, czy jawnie ustawiłem atrybut accept w elemencie wejściowym.

 1
Author: RenatoIvancic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-30 17:24:29

Teraz możesz użyć nowego atrybutu HTML5 input validation pattern=".+\.(xlsx|xls|csv)".

 0
Author: iiic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-15 10:20:22

Użycie regex byłoby szybsze

    function checkIsExcel(file) {
        if ((!/.*\.xlsx$/.test(file.name)) && (!/.*\.xls$/.test(file.name)) && (!/.*\.csv$/.test(file.name))) {
            return false;
        }
        return true;
    }
 -1
Author: pimkle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-27 03:18:47