MultipartHttpServletRequest, MultipartFile, transferTo() 사용하여 파일쓰기



<jsp>

1
2
3
4
5
6
7
8
9
10
<div class="form-group">
    <label for="imgFile" class="col-sm-2 control-label">이미지파일첨부</label>
    <div class="col-sm-10">
        <div class="col-sm-12 ">
            <input type="file" id="imgFile" name="imgFile" onchange="uploadImage()" title="첨부파일 찾기">
            <h6>※JPG 20kbyte 이하</h6>
            <input type="text" id="imgUrl" name="imgUrl" placeholder="이미지 URL" class="col-xs-10 col-sm-10" readonly>
        </div>
    </div>
</div>
cs




<javascript>

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
//서버 이미지 등록 /home/dev/imageRoot/mms.jpg
function uploadImage(){
    
    //확장자 체크
    var arr = $("#imgFile").val().split(".");
    var arrSize = arr.length;
    if (arr[arrSize-1].toUpperCase()!="JPG")
    {
        $("#imgUrl").val('');
        alert("지원하지 않는 파일 확장자입니다.");
        return false;
    }
    
    //파일크기 체크
    var fileSize = $("input[name='imgFile']")[0].files[0].size;
    console.log("### fileSize="+fileSize);
    if (fileSize > 20480) {//20480 = 20Kb
        $("#imgUrl").val('');
        $("#imgFile").val('');
        alert("JPG 이미지는 20kbyte 이하여야 합니다.");
        $("#imgFile").focus();
        return false;
    }
    //파일이 있어야만 함
 
    //서버 이미지 등록
    var formData = new FormData();
    formData.append("file",$("input[name='imgFile']")[0].files[0]);
        $.ajax({
            type: 'POST',
            url : '${rc.contextPath}/mmsImageUpload.do',
            processData: false,
            contentType: false,
            data: formData,
            success: function(result){
                $("#imgUrl").val( result );
            },
            error: function(e){
                alert("이미지등록 처리중 오류가 발생하였습니다.");
            }
        });
}
cs



<java>

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
/**
 * MMS 문자에 첨부할 이미지파일 업로드
 * 서버에 업로드 한다 (/home/dev/imageRoot/test.jpg)
 * mms.jpg 파일 하나에 덮어쓰기 한다
 * JPG 파일 용량은 20kbyte 이하여야 한다
 * @param request
 * @param response
 * @throws IOException
 */
@RequestMapping(value="/mmsImageUpload", method=RequestMethod.POST)
public void mmsImageUpload(MultipartHttpServletRequest request, HttpServletResponse response) throws IOException {
    try {
        
        String filePath = null;
        
        Map<String, MultipartFile> fileMap = request.getFileMap();
        for (MultipartFile multipartFile : fileMap.values()) {
            
            //String originalFileName = multipartFile.getOriginalFilename();
            String originalFileName = "mms.jpg";
            
            filePath = "/home/dev/imageRoot/Sms/"+originalFileName;
            //filePath = "D:\\DEV\\ImageRoot\\Sms\\"+originalFileName;
            
            File file = new File(filePath);
            if(!file.exists()) {
                file.mkdirs();
            }
            multipartFile.transferTo(file);
        }
        
        response.setContentType("text;");
        response.getWriter().write(filePath);            
        
    } catch (Exception e) {
        e.printStackTrace();
    }
    
}
cs


+ Recent posts