프로그래밍/java script

파일 업로드

kingroad 2018. 7. 18. 15:25

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>ajax 파일 업로드</title>

</head>

<body>

<h1>AJAX 멀티파트 전송 - 파일 선택 즉시 전송하기</h1>

<pre>

1) jQuery의 파일 업로드 관련 플러그인을 설치한다.

   > npm init

   > npm install jquery@1.12.4 --save

   > npm install bootstrap --save

   > npm install blueimp-file-upload --save 

2) HTML에 업로드 관련 자바스크립트 라이브러리 추가 

3) input 태그 추가

   - form 태그와 submit 타입의 버튼은 필요 없다.

   - 대신 input 태그에 서버측 URL를 지정한다.

   - 여러 개를 선택하고 싶다면 multiple 속성을 추가한다.

4) jquery.fileupload() 함수를 이용하여 서버에 비동기 요청하기

   - 여러 개의 파일을 선택했을 때, 각 파일마다 따로 비동기 요청을 수행함. 

   - 각각의 파일에 대해 업로드가 완료되면 done() 함수가 호출된다.

</pre>


<input id="fileupload" type="file" name="files" 

       data-url="/control/controller24/upload2.do" multiple>


<script src="node_modules/jquery/dist/jquery.js"></script>

<script src="node_modules/blueimp-file-upload/js/vendor/jquery.ui.widget.js"></script>

<script src="node_modules/blueimp-file-upload/js/jquery.iframe-transport.js"></script>

<script src="node_modules/blueimp-file-upload/js/jquery.fileupload.js"></script>

<script>

"use strict"


$('#fileupload').fileupload({

    dataType: 'json',

    done: function (e, data) { 

      console.log('done()...');

      console.log(data.result); // 서버가 보낸 JSON 객체는 data.result 에 보관되어 있다.

      var file = data.result.fileList[0];

      $('<p/>').text(file.filename + " : " + file.filesize).appendTo(document.body);

    }

});


</script>


</body>

</html>