happy cat image

everdevel

Brand New Day

login
알림X
  • 현재 댓글에 대한 답변만 표시합니다.
  • 표시할 댓글 이력이 없거나 로그인해 주세요.

EEOS

에버디벨 책을 학습할 수 있는 클라우드 개발 환경을 제공합니다.
개발환경구축없이 태블릿에서도 개발할 수 있는 책의 예제와 프로젝트
오직 당신을 위한 스토리지, URL, DB, 무제한 트래픽
그리고 웹기반 개발환경을 제공합니다.

더 알아보기
에버디벨이 만든 무료 클라우드 개발환경을 소개합니다.

input태그 선택한 파일 목록보기

안녕하세요. input태그로 선택한 파일의 목록을 보는 방법에 대해서 알아보겠습니다.

files

files를 사용하면 선택한 파일을 목록을 볼 수 있습니다.

files 사용방법

$('selector').files;

자 그럼 우선 파일선택폼을 만들어보겠습니다. php의 다중 파일 업로드 강의에서 사용한 코드를 참조해서 사용할게요.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>everdevel - jQuery 선택한 파일 목록보기</title>
</head>
<body>
    <form method="post" action="upload-multiple.php" enctype="multipart/form-data">
        <input type="file" id="fileUpload" name="upload[]" multiple>
        <ul id="fileList"></ul>
        <input type="submit" value="send">
    </form>
</body>
</html>

로그인을 하지 않은 상태에서도 이제 위의 코드를 실행 할 수 있습니다.
하지만 로그인을 하시면 더 편리하게 사용 할 수 있습니다.
LOGIN

갑작스레 파일업로드라니 당황스러울 수 있어요. 하지만 PHP는 다루지 않으지 걱정하지 마시길...

위의 코드를 실행하고 여러개의 파일을 선택해 보세요.

저는 3개의 파일을 선택했습니다.

결과

jQuery File List

파일을 1개만 선택하면 다음과 같이 파일명이 표시됩니다.

jQuery File List

우리는 선택한 파일의 파일명이 표시되게끔 할거에요.
표시할 태그를 하나 만들게요. 만들태그는 다음과 같습니다.

<ul id="fileList"></ul>

그리고 input 태그의 값이 바뀔때마다 이벤트를 발생시킬게요. 사용할 코드는 다음과 같아요.

$("#fileUpload").change(function(){
    console.log('Hello I am event ^-^;');
});

자 우선 여기까지 해보고 결과를 봅시다.
참고로 위에 콘솔로그를 사용했죠? 그러니 크롬에서 command + option + i 를 눌러서 개발자 모드를 켜고 콘솔탭을 누르세요. 윈도우에서는 f12를 누르면 개발자 모드가 켜질거에요.
위의 코드들을 적용하면 아래와 같습니다. 실행해 보세요. ^^

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>everdevel - jQuery 선택한 파일 목록보기</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.min.js" ></script>
<script type="text/javascript">
$(function(){
    //여기부터
    $("#fileUpload").change(function(){
        console.log('Hello I am event ^-^;');
    });
    //여기까지
});
</script>
</head>
<body>
    <form method="post" action="upload-multiple.php" enctype="multipart/form-data">
        <input type="file" id="fileUpload" name="upload[]" multiple>
        <!-- 여기에 파일 목록 태그 추가 -->
        <ul id="fileList"></ul>
        <input type="submit" value="send">
    </form>
</body>
</html>

로그인을 하지 않은 상태에서도 이제 위의 코드를 실행 할 수 있습니다.
하지만 로그인을 하시면 더 편리하게 사용 할 수 있습니다.
LOGIN

파일을 선택해 보세요. 콘솔창에 Hello I am event ^-^; 가 뜰거에요. 그럼 이벤트가 정상작동하는겁니다.

결과

jQuery File List

그럼 콘솔로그에 있는 내용을 지우고 해당 태그에 들어있는 파일정보를 보도록 합시다.

$("#fileUpload").change(function(){
    console.log($("#fileUpload")[0].files);
});

id로 선택을 했지만 [0]을 붙여주세요. 붙이지 않으면 files의 정보가 나타나지 않습니다.
그럼 위의 코드를 적용하고 결과를 봅시다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>everdevel - jQuery 선택한 파일 목록보기</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.min.js" ></script>
<script type="text/javascript">
$(function(){
    //여기부터
    $("#fileUpload").change(function(){
        console.log($("#fileUpload")[0].files);
    });
    //여기까지
});
</script>
</head>
<body>
    <form method="post" action="upload-multiple.php" enctype="multipart/form-data">
        <input type="file" id="fileUpload" name="upload[]" multiple>
        <!-- 여기에 파일 목록 태그 추가 -->
        <ul id="fileList"></ul>
        <input type="submit" value="send">
    </form>
</body>
</html>

로그인을 하지 않은 상태에서도 이제 위의 코드를 실행 할 수 있습니다.
하지만 로그인을 하시면 더 편리하게 사용 할 수 있습니다.
LOGIN

결과

콘솔탭의 FileList 앞의 화살표를 누르면 아래와 같이 이미지 목록이 나타납니다.

jQuery File List
0: File {name: "IMG_0997.jpg", lastModified: 1594458725000, lastModifiedDate: Sat Jul 11 2020 18:12:05 GMT+0900 (대한민국 표준시), webkitRelativePath: "", size: 2475639, …}
1: File {name: "IMG_0998.jpg", lastModified: 1594458737000, lastModifiedDate: Sat Jul 11 2020 18:12:17 GMT+0900 (대한민국 표준시), webkitRelativePath: "", size: 1870105, …}
2: File {name: "IMG_0999.jpg", lastModified: 1594458787000, lastModifiedDate: Sat Jul 11 2020 18:13:07 GMT+0900 (대한민국 표준시), webkitRelativePath: "", size: 1278378, …}

위와 같이 데이터가 나옵니다. 앞의 0,1,2는 각 정보의 인덱스이고 name에 보면 이미지 파일명이 있습니다.
이 데이터를 ul태그에 넣겠습니다.

다음과 같이 구현을 했습니다.

$("#fileUpload").change(function(){
    fileList = $("#fileUpload")[0].files;
    fileListTag = '';
    for(i = 0; i < fileList.length; i++){
        fileListTag += "<li>"+fileList[i].name+"</li>";
    }
    $('#fileList').html(fileListTag);
});

자 그럼 최종 소스는

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>everdevel - jQuery 선택한 파일 목록보기</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.min.js" ></script>
<script type="text/javascript">
$(function(){
    $("#fileUpload").change(function(){
    fileList = $("#fileUpload")[0].files;
    fileListTag = '';
    for(i = 0; i < fileList.length; i++){
        fileListTag += "<li>"+fileList[i].name+"</li>";
    }
    $('#fileList').html(fileListTag);
});
});
</script>
</head>
<body>
    <form method="post" action="upload-multiple.php" enctype="multipart/form-data">
        <input type="file" id="fileUpload" name="upload[]" multiple>
        <!-- 여기에 파일 목록 태그 추가 -->
        <ul id="fileList"></ul>
        <input type="submit" value="send">
    </form>
</body>
</html>

로그인을 하지 않은 상태에서도 이제 위의 코드를 실행 할 수 있습니다.
하지만 로그인을 하시면 더 편리하게 사용 할 수 있습니다.
LOGIN

결과

jQuery File List

봐주셔서 감사합니다. ^^


    
    

강좌로 돌아가기

댓글 0개

정렬기준