JAVA

파일 업로드

KIMSG 2017. 7. 21. 14:08
1
2
3
4
5
6
7
enctype="multipart/form-data">    form 태그에 꼭 멀티파트를 추가한다!
 
<inputtype="file"class="inp_txt w100p"name="certBusiFile"id="certBusiFile"capture="certBusiFile"accept="image/*"/><br>
cs


이렇게 input으로 값을 가져와서....



java객체로 돌립니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  /*회원 첨부파일 등록*/
            List<HashMap<StringString>> fileList = FileUtil.uploadFile(mutipartRequest);
           
            for(int i=0; i<fileList.size(); i++){
                fileVO.setFileType(fileList.get(i).get("fileType"));
                fileVO.setUserNo(userNo.getUserNo());
                fileVO.setFileNm(fileList.get(i).get("fileNm"));
                fileVO.setFilePath(fileList.get(i).get("filePath"));
                fileVO.setRegUser(userNo.getUserNm());
                fileService.userAttachfile(fileVO);
            }

 
cs


1
2
3
이때ㄴ, 
MultipartHttpServletRequest mutipartRequest, FileVO fileVO ,  의 파라미터를 받아오고....
 
cs



fileutil은...  아래


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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package egovframework.utils;
 
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
 
 
/**
 * GCM UTIL
 *
 * gcm-server.jar, json-simple-1.1.1.jar 필요
 *
 * @author
 *
 */
public class FileUtil {
 
    private static final Logger log = LoggerFactory.getLogger(FileUtil.class);
 
    public static List<HashMap<String,String>> uploadFile(MultipartHttpServletRequest request) throws IOException {
 
        List<HashMap<StringString>> result = new ArrayList<HashMap<StringString>>();
 
        String filePath = "";        //서버별 물리경로 구함.
 
        String directory_cert = "cert/";
        String directory_prodImg = "productImage/";
        String directory_user = "userImage/";
        String originalFileName = "";
        String originalFileExtension = "";
        String storedFileName = "";
 
        Iterator<String> itr =  request.getFileNames();
 
        while(itr.hasNext()) {
            MultipartFile mpf = request.getFile(itr.next());
            if(mpf.isEmpty() == false){
                filePath = request.getSession().getServletContext().getRealPath("/")+"/resource/upload/";     
                originalFileName = mpf.getOriginalFilename();
                originalFileExtension = originalFileName.substring(originalFileName.indexOf("."));
                storedFileName = createFileName() + originalFileExtension;
 
                HashMap<StringString> map = new HashMap<StringString>();
 
                if(mpf.getName().contains("prodImg")){                                                                    //상품이미지
                    filePath += directory_prodImg+DateUtil.getCurrentDate("yyyyMMdd")+"/";
                    map.put("fileType""PROD_IMG");
                    map.put("fileNm", storedFileName);
                    map.put("filePath", directory_prodImg+DateUtil.getCurrentDate("yyyyMMdd")+"/");
                }
 
 
                result.add(map);
 
                File file = new File(filePath);
                if(file.exists() == false){
                    file.mkdirs();
                }
 
                file = new File(filePath + storedFileName);        //상품이미지경로 + 현재일자폴더생성 + 파일명
                mpf.transferTo(file);
 
                log.info(mpf.getOriginalFilename() +" uploaded!");
                log.info("file length : " + mpf.getBytes().length);
                log.info("file name : " + mpf.getOriginalFilename());
            }
        }
 
        return result;
    }
 
    public static String createFileName(){
        String fileName = DateUtil.getCurrentDate("yyyyMMdd");
        Random random = new Random();
        fileName += String.valueOf(random.nextInt(100000));
        return fileName;
    }
}
 
cs