jquery 를 이용한 드래그앤드랍 파일업로드 방법이다.
우선, 파일을 탐색기에서 드래그하여, 드랍할 영역을 아래와 같이 만든다.
<style>
<div id="dropzone">Drag & Drop Files Here</div> |
웹브라우저로 보면, 아래와 같이 나타나게 된다.
이제 div 영역에 아래와 같이, 자바스트립트로 drag & drop 을 허용해준다.
$(function () { obj.on('dragenter', function (e) { obj.on('dragleave', function (e) { obj.on('dragover', function (e) { obj.on('drop', function (e) { var files = e.originalEvent.dataTransfer.files; F_FileMultiUpload(files, obj); }); |
div 영역의 dotted 테두리에 드래그 하여 마우스를 올리면, 아래와 같이 solid 테두리로 변경된다.
drop 이벤트를 보면, e.originalEvent.dataTransfer.files 에서 멀티업로드시, drop 했던 파일 목록을 가져와서, 업로드 하는 함수를 호출하고 있다. 이 영역이 파일뿐만 아니라, 다른 것들도 drag and drop 이 허용되기 때문에, 파일이 있는 경우만, 업로드 처리를 하고 있다.
이제 실제, 서버로 업로드 하는 자바스크립트는 아래와 같다.
// 파일 멀티 업로드 var url = "<서버 파일업로드 URL>"; // 파일 멀티 업로드 Callback |
drop 했던 파일 목록은, FormData 형태의 file 배열로 넘긴다.
이는 INPUT 태그의 file 과 같다.
서버의 <서버 파일업로드 URL> 은 php, asp.net, java 등의 기존 업로드 로직을 그대로 사용하면 된다.
서버쪽은, 다르게 처리할 부분이 전혀없다.
예제에서 사용한 서버코드는 asp.net 에서, Request.Files 로 업로드 파일을 저장하고, 저장된 결과의 파일명과 파일사이즈를 json 형태로 리턴하였다.
'개발팁' 카테고리의 다른 글
MSSQL 서버 버전 확인방법 (0) | 2016.10.12 |
---|---|
웹, html, css, javascript - 말줄임 Ellipsis 표시하기 (0) | 2016.09.23 |
html 엑셀다운로드, 셀의 문자를 숫자로 인식하는 현상 (0) | 2016.09.01 |
ASP.NET MVC 에서 크리스탈레포트 사용하기 (0) | 2016.08.31 |
MS-SQL 자동증가 컬럼, Identity 사용하기 (0) | 2016.08.30 |