<input type =“file”>로 여러 파일을 선택하는 방법은 무엇입니까?


110

로 여러 파일을 선택하는 방법은 <input type="file">무엇입니까?


그것은 자바 스크립트와 HTML에 관한 것입니다
Mask

한 번에 여러 파일을 업로드한다는 의미입니까 (한 번에 하나씩 선택한 다음 업로드를 클릭하는 경우)? 아니면 하나의 브라우저 창에서 여러 파일을 선택하기 위해 Ctrl + 클릭을 사용하는 것을 의미합니까?
cletus

2
입력 요소의 다중 속성을 사용하여 HTML5로 수행 할 수 있습니다. <input type = ' file'multiple
Costa

답변:


126

새로운 답변 :

HTML5에서 multiple속성을 추가하여 둘 이상의 파일을 선택할 수 있습니다 .

<input type="file" name="filefield" multiple="multiple">

이전 답변 :

당 하나의 파일 만 선택할 수 있습니다 <input type="file" />. 여러 파일을 보내려면 여러 입력 태그를 사용하거나 Flash 또는 Silverlight를 사용해야합니다.


7
Gmail
은이

19
HTML5 이후가 아닙니다. 입력 필드에 대한 여러 속성이 있습니다.
Costa

2
@Costa 2009 년 10 월 20 일에 대부분의 브라우저는이 기능을 지원하지 않았고 Niavlys는 이미 2 년 전에 html5 솔루션을 보여주었습니다.
ZippyV

2
이 대답은 공룡보다 더 오래되었습니다
Click Upvote

2
이 multiple = "multiple"은 사용자 친화적이지 않고, avarage 사용자는이를 이해하지 못하며 "ctrl 버튼"이 무엇을하는지 알지 못하며 다른 폴더에있는 파일을 선택할 수 없습니다.
Jean-Paul

84

HTML5 <input type="file" multiple />( 사양 )도 있습니다.

브라우저 지원은 데스크톱에서 상당히 좋고 (IE 9 이하에서는 지원되지 않음), 모바일에서는 좋지 않습니다. 플랫폼과 버전에 따라 올바르게 구현하기가 더 어렵 기 때문이라고 생각합니다.


9
IE9 및 이전 버전에서는 지원되지 않음 :(
Ashit Vora

7
추가 고려name="files[]"
Wariored

22

전체 내용은 다음과 같아야합니다.

<form enctype='multipart/form-data' method='POST' action='submitFormTo.php'> 
    <input type='file' name='files[]' multiple />
    <button type='submit'>Submit</button>
</form>

태그에 enctype='multipart/form-data'속성 이 있는지 확인하십시오. <form>그렇지 않으면 제출 후 서버 측에서 파일을 읽을 수 없습니다!


websocket 또는 ajax로 제출하지 않는 한
bluejayke


8

이제 HTML5로 할 수 있습니다.

본질적으로 파일 입력에 여러 속성을 사용합니다.

<input type='file' multiple>

이 일에 대한 지원은 어떻습니까? Canisuse.com에는 정보가 없습니다.
Hubert OG

잘 모르겠어요, 같은 곳을 확인 했어요, 하하.
Costa '

1
FileReader 에는 .name속성 이 없으므로 예제의 제목은 항상 undefined다음과 같습니다. jsfiddle.net/m5jeyeyt/1
vladkras

1

HTML5는 유형 속성이 파일 인 입력 요소에 대해 새 속성 다중을 제공했습니다. 따라서 여러 파일을 선택할 수 있으며 IE9 및 이전 버전은이를 지원하지 않습니다.

참고 : 입력 요소의 이름에주의하십시오. 여러 파일을 업로드하려면 name 속성 값으로 문자열이 아닌 배열을 사용해야합니다.

예 : input type = "file"name = "myPhotos []"multiple = "multiple"

그리고 php를 사용하는 경우 $ _FILES에 데이터를 가져오고 var_dump ($ _ FILES)를 사용하고 출력을보고 처리를 수행합니다. 이제 반복하고 나머지를 수행 할 수 있습니다.


1

간단합니다 ...

<input type='file' multiple>
$('#file').on('change',function(){
     _readFileDataUrl(this,function(err,files){
           if(err){return}
           console.log(files)//contains base64 encoded string array holding the 
           image data 
     });
});
var _readFileDataUrl=function(input,callback){
    var len=input.files.length,_files=[],res=[];
    var readFile=function(filePos){
        if(!filePos){
            callback(false,res);
        }else{
            var reader=new FileReader();
            reader.onload=function(e){              
                res.push(e.target.result);
                readFile(_files.shift());
            };
            reader.readAsDataURL(filePos);
        }
    };
    for(var x=0;x<len;x++){
        _files.push(input.files[x]);
    }
    readFile(_files.shift());
};

5
이것은 이미 명확하게 대답되었습니다. 자바 스크립트 예제를 추가하려면 무엇이 필요합니까?
RightHandedMonkey

그것의 좋은 원인?
Thomas Ludewig

0
<form action="" method="post" enctype="multipart/form-data">
<input type="file" multiple name="img[]"/>
<input type="submit">
</form>
<?php
print_r($_FILES['img']['name']);
?>

-2

이것을 복사하여 html에 붙여 넣으십시오.

<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>

<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object

// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
  output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
              f.size, ' bytes, last modified: ',
              f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
              '</li>');
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}

이것은 나를 통해 다음 웹 페이지에서 제공됩니다. http://www.html5rocks.com/en/tutorials/file/dndfiles/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.