HTML 입력 =“파일”속성 파일 형식 (CSV) 수락


501

내 페이지에 파일 업로드 객체가 있습니다.

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

내 바탕 화면에 다음과 같은 Excel 파일이 있습니다.

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

나는 파일을 업로드 할 만 보여 .xlsx, .xls, .csv파일을.

이 accept속성을 사용하여 이러한 콘텐츠 유형이 .xlsx& .xls확장을 처리 한다는 것을 알았습니다 ...

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

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

그러나 Excel CSV 파일에 올바른 내용 유형을 찾을 수 없습니다! 어떤 제안?

예 : http://jsfiddle.net/LzLcZ/


대부분의 브라우저는 accept 속성을 존중하지 않으므로 민감한 파일을 전송하는 데주의를 기울이지 않는 사용자를 확보 할 수 있습니다.
— tletnes

9
@tletnes는 사실이 아니며 대부분의 주요 브라우저에서 지원됩니다
— Dom

($ .trim ($ ( '# OriginalFileName'). val ())! = "") {var ext = $ ( '# OriginalFileName'). val (). split ( '.') .pop (). toLowerCase (); if ($ .inArray (ext, [ 'doc', 'docx', 'pdf', 'xlsx', 'xls']) == -1) {$ ( '# OriginalFileNameValid'). html ( 'Use .doc , .docx, .pdf 파일 '); }}
— Nithin Paul

다른 우분투 사용자가 이것으로 혼란스러워하는 경우, 우분투에서는 Firefox가 기본적으로 "모든 파일"을 표시하지만 "accept"속성이 파일 선택 대화 상자의 파일 유형 드롭 다운에 추가된다는 것을 알았습니다.
— mltsy

답변:


1246

글쎄요, 이것은 당황 스럽습니다 ... 나는 내가 찾고있는 해결책을 찾았고 더 간단 할 수 없었습니다. 원하는 결과를 얻기 위해 다음 코드를 사용했습니다. 이것이 미래의 누군가를 돕기를 바랍니다. 도와 주셔서 감사합니다.

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

유효한 수락 유형 :

대한 CSV 파일 (.csv)로 사용 :

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

대한 엑셀 파일 97-2003 (.XLS), 사용 :

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

대한 엑셀 파일 2007 이상 (.XLSX), 사용 :

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

들어 텍스트 파일 (.txt)로 사용 :

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

에 대한 이미지 파일 (PNG로 / .JPG / 등), 사용 :

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

대한 HTML 파일 (.HTM, .html)을 사용합니다 :

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

들어 비디오 파일 (.AVI, .MPG, .MPEG, .MP4), 사용 :

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

들어 오디오 파일 (.MP3, .WAV 등), 사용 :

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

대한 PDF 파일 , 사용 :

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

데모 :
http://jsfiddle.net/dirtyd77/LzLcZ/144/


노트:

Excel CSV 파일 ( .csv) 을 표시하려는 경우 다음을 사용 하지 마십시오 .

  • text/csv
  • application/csv
  • text/comma-separated-values( 오페라에서만 작동 ).

특정 파일 형식 (예 : a WAV또는 PDF) 을 표시하려고 하면 거의 항상 작동합니다 ...

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

3
Chrome에서이 속성을 지원하는 것 같지만 Firefox는 여전히이 속성을 사용하고 있습니다. 이 버그에 투표하면 더 빨리 해결할 수 있습니다. bugzilla.mozilla.org/show_bug.cgi?id=826176
— Salvatorelab

3
@DavidRouten accept 속성은 파일 형식 만 필터링합니다. 사용자가 다른 파일 형식을 선택하지 못하게하려면 파일 유효성 검사를 사용해야합니다. 희망이 도움이됩니다!
— Dom

1
Firefox에서는 <input type = "file"accept = ". csv"/>가 작동하지 않습니다. Firefox에서 작동하는 다른 솔루션이 있습니까?
— Ganesa Vijayakumar

1
<input type="file" accept=".csv, text/csv" />파이어 폭스, 크롬 및 맥의 오페라에서 나를 위해 일했습니다. 모든 브라우저에서 .csv 만 작동하는 것은 아닙니다.
— tmas

1
"xml"파일의 예를 추가 할 수 있습니까? 도움이 될 것입니다. 미리 감사드립니다.
— ni8mr


38

Dom이 속성은 매우 오래되었고 내가 아는 한 최신 브라우저에서는 허용되지 않지만 여기에 대한 대안이 있습니다.

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

물론 그것은 당신이 당신의 필요에 따라이 스크립트를 변경할 수 있습니다 도움이 될 것 같아요.


5
멋진 해결 방법이지만 왜 그런 속성이 '오래된'것으로 간주되는지 이해하지 못합니다. 이것은 거의 모든 OS에서 기본 파일 선택기 기능이며, 브라우저는 작동하도록 최선을 다해야하며 많은 사용자를 도울 것입니다.
— Christophe Roussy

1
수락 속성은 이전하지 않고 IE / 에지를 제외한 주요 브라우저에서 지원됩니다 caniuse.com/#feat=input-file-accept를 . 오해의 여지가 있으므로 답변을 다시 입력하십시오.
— thomaux

2
accept속성 의 가장 중요한 측면은 파일 열기 대화 상자에 제공하는 힌트입니다. 사용자에게 기본적으로 일치하는 파일이 제공되어야하며, 원하는 경우 다른 유형을 선택할 수있는 옵션이 제공 될 것입니다. 이것이 현재 가장 최신 브라우저의 작동 방식입니다.
— Coderer

13

text/comma-separated-valuesaccept 속성에서 CSV mime-type에 사용 했으며 Opera에서 제대로 작동합니다. text/csv운없이 시도했다 .

제안 된 기능이 작동하지 않는 경우 CSV에 대한 다른 일부 MIME 유형 :

  • 텍스트 / 쉼표로 구분 된 값
  • text / csv
  • 응용 프로그램 / csv
  • 응용 프로그램 / 엑셀
  • application / vnd.ms-excel
  • 응용 프로그램 /vnd.msexcel
  • 텍스트 / 모든 텍스트

출처 : http://filext.com/file-extension/CSV


1
안녕 돔! 귀하의 답변 (오른쪽으로 표시됨)이 정상이기 때문에 죄송합니다. 오페라에서만 사이트를 테스트했기 때문에 많은 관심을 기울이지 않았습니다. 다른 브라우저에서 테스트 한 후 답변이 더 완벽하다는 것을 알았습니다. 그러나 모든 브라우저에서 작동하지는 않습니다. Firefox 17은 파일 대화 상자 ( bugzilla.mozilla.org/show_bug.cgi?id=83749#c14 ) 의 필터 방식을 허용하지 않으므로이 속성은 긴장합니다. 어쨌든 자바 스크립트 파일 유효성 검사를 사용하지만 text / csv는 atana
— org

11

Safari 10에서는 작동하지 않았습니다.

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

대신 이것을 써야했습니다.

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

Hii, 내 사파리에서도 잘 작동합니다. 그러나 엑셀 문서를 수락하려면 어떻게해야합니까? 실마리가 있습니까? @trojan
— 구스타프

Big Money의 답을 확인하십시오. TLDR; <input type = "file"ID = "fileSelect"accept = ". xlsx, .xls, .csv"/>
— Sk. Irfan

4

다음을 수행하여 파일의 올바른 내용 유형을 알 수 있습니다.

1) 관심있는 파일을 선택하고

2) 콘솔에서 다음을 실행하십시오.

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

입력에 속성 "multiple"을 설정하여 한 번에 여러 파일의 컨텐츠 유형을 확인하고 다음을 수행 할 수도 있습니다.

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

속성 수락에는 여러 속성에 일부 문제가 있으며이 경우 올바르게 작동하지 않습니다.


1

@yogi의 솔루션을 수정했습니다. 또한 파일의 형식이 잘못된 경우 입력 요소 값을 재설정합니다.

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

열린 파일 창에서 사용자가 입력 요소에서 accept 속성을 명시 적으로 설정했는지 여부에 관계없이 사용자는 여전히 "모든 파일 ( '*')"옵션을 선택할 수 있기 때문에 사용자 정의 확인 내장 기능이 있습니다.


0

이제 새로운 html5 입력 유효성 검사 속성을 사용할 수 있습니다 pattern=".+\.(xlsx|xls|csv)".


10
에 따르면 MDN , This attribute applies when the value of the type attribute is text, search, tel, url or email; otherwise it is ignored.파일 입력에 관해서는, 그들은 말을 계속file: A control that lets the user select a file. Use the accept attribute to define the types of files that the control can select.
— 돔
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.