// HTML page


<body>


<div>

<form name="frm" method="post" >

<button id="submit">전송</button><br/>


<span>파일선택</span><input name="solo_file"    id="soloFile"  type="file"><br/>

<!-- <input name="audio_files[]" type="file" multiple accept="audio/*" > -->

<span>파일여러개선택</span><input name="multi_file[]" id="multiFile" type="file" multiple  ><br/>

<input name="test1" type="text" ><br/>

<textarea name="test2" rows="10" cols="10"></textarea><br/>

</form>

</div>

<script>



/* 


자바스크립트 ajax를 사용하여 파일을 전송하고자 할때 유용하다.

FormData 객체는 폼의 각 필드 값을 키/값 쌍으로 자바스크립트로 폼 전송 체계를 구현한다.

   FormData 는 console.log로 확인 안된다. 크롬개발자도구(Network) XHR로 확인하자.


*/


function ajaxSend() {


var formData = new FormData();

 

            formData.append("test1", $(":text").val());

        formData.append("test2", $("textarea").val());

        formData.append("solo_file", $("#soloFile")[0].files[0]); //파일 한개


              //file multiple 전송시 다음과 같이 반복문으로 추가한다.   //파일 여러개

$($("#multiFile")[0].files).each(function(index, file) {

        formData.append("multi_file[]", file);

        });


$.ajax({

url: './test_b.html',

type: "post",

processData: false,  // file전송시 필수

                   contentType: false,  // file전송시 필수

data: formData

})

.done(function(data) {

//console.log(data);

})

}



$("#submit").click(function(e) {

e.preventDefault();

ajaxSend();

});


</script>


</body>






// PHP page

<?


$test1 = $_POST['test1'];

$test2 = $_POST['test2'];

$solo_file = $_FILES["solo_file"];

$multi_file = $_FILES["multi_file"];


?>






출처 : 

http://www.code-hound.com/upload-multiple-files-at-once-with-jquery-and-php/

https://www.youtube.com/watch?v=mG9yIBq2-c8

http://www.prodevtips.com/2012/06/07/multiple-file-uploads-and-progress-bar-with-xhr2-and-jquery/




반응형
Posted by 힘없는염소