기본 콘텐츠로 건너뛰기

서버에 이미지 저장하지않고 이미지 미리보기 하는 방법



안녕하세요 광흠입니다.

이번에 포스팅할 것은 바로 웹상에서 바로 이미지 미리보기를 보여드리기위해서입니다.

일단 이미지 미리보기에서 제외되는 브라우저는 IE 9이하에서는 브라우저 특성상

이번 포스팅에서 제외된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function readImage(input) {
    $.each(input.files,function(cnt,node){
        var ext = node.name.substring(node.name.lastIndexOf(".")+1);
        if(/(jpe?g|png|gif|bmf)$/gi.test(ext)){
            var fileReader = new FileReader();
            fileReader.onload = function(e) {
                getImage(e.target.result);
            };
            fileReader.readAsDataURL(node);
        }else{
            var imgIcon = "${ctx}/resources/images/common/file-type-icon/png/"+ext+".png";
            $.ajax({
                url: imgIcon,
                statusCode: {
                    200function(){
                        getImage(imgIcon);
                    },
                    404function(){
                        getImage("${ctx}/resources/images/common/img-noPhoto.png");
                    }
                }
            });
        }
    });
}
function getImage(src){
    $("#previewImage").show().append($("<img/>",{"src":src,"style":"max-width: 100%;"}));
}
$(document).ready(function(){
    $("input[type=file]").change(function(){
        var thisFile = $(this);
        var form = $("#test-form");
        $("#previewImage").children().remove();
        $("#loading-image-gif").show();
        //ie9 이하는 javascript로 이미지화 할 수 없으므로 컨트롤러 타고 해야함.
        if(/MSIE/gi.test(navigator.userAgent)&&/^MSIE 10/gi.test(navigator.userAgent)){
            //브라우저 특성상 서버를 타야한다
        }else{
            readImage(this);
        }
        $("#loading-image-gif").hide();
        return false;
    });
});
cs

보는거와 같이 이미지를 읽어와서 base64로 이미지를 인코딩을 해서 이미지를 변경해서

사용하면 이미지 미리보기를 따로 서버로 업로드 하지 않고 바로 이미지를

미리보기 해줄 수 있다.

만약 익스9이하에서 동작하고싶다면 37번째줄에 ajax통신하여 이미지를

서버사이드에서 base64 인코딩한 값을 리턴해주면 된다.

이상으로 이미지 미리보기를 마치겠습니다 ^^


댓글