2017년 7월 19일 수요일

Image 값 과 list 값 DB에 입력하기




item_img 테이블안에 가지고 있는 만틈 foreach 해준다. separator = " , "

1
2
3
4
5
6
7
8
9
10
    //XML
    <insert id="addItemImg" parameterType="com.ds.vo.Item">
        INSERT INTO p1_item_img(item_no, item_img, img_date) 
        VALUES            
            <foreach collection="item_img" item="tmp" separator=",">
                (#{item_no}, #{tmp}, NOW())
            </foreach>
    </insert>
cs
 해당 DAO이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    // DAO
    public int addItem(Item item){
        try {
             sqlSession.insert("P1.addItem", item);
             sqlSession.insert("P1.addItemImg", item);
            // sqlSession.commit();
             System.out.println("데이터베이스 입력성공");
             return 1;
             /*return sqlSession.insert("P1.addItem", item);*/
        } catch (Exception e) {
            System.out.println(e.getMessage());
            //sqlSession.rollback();
            return 0;
        }
cs



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
    // Contoroller
@RequestMapping(value = "p1_admin", method = RequestMethod.POST)
public String p1_admin(@ModelAttribute("item") Item item, MultipartHttpServletRequest request) {
    String root = request.getSession().getServletContext().getRealPath("/");
    
    Map<String, MultipartFile> map = request.getFileMap();
    List<String> item_img = new ArrayList<String>();
    for (int i = 0; i < map.size(); i++) {
        MultipartFile mpf = map.get("img_" + (i+1));         
        
        if (mpf != null && !mpf.getOriginalFilename().equals("")) {
                String ext = UploadClass.getExt(mpf.getOriginalFilename());        
                String fileName = UploadClass.getUUid()+ext;                
                
                String path = root + "resources" + File.separator + "images"
                    + File.separator +fileName;                
                                                            
                                                            
            System.out.println(path);
            File file = new File(path);
            try {
                mpf.transferTo(file);
                item_img.add(fileName);
                
            } catch (Exception e) {
                System.out.println("E1 : "+e.getMessage());
                e.printStackTrace();
            }
        }
    }
    try {
        item.setItem_img(item_img);
        p1_DAO.addItem(item);
    } catch (Exception e) {
        System.out.println("E2"+e.getMessage());
    }
    return "redirect:p1_admin";
cs

ext로 확장자 때는 작업을 한다.
String ext = UploadClass.getExt(mpf.getOriginalFilename());  

 filename은 이름 바꾼 파일에 다시 확장자를 붙이는 작업을 한다.
String fileName = UploadClass.getUUid()+ext;    

path 작업으로 중복지정되지 않게 한다.
 String path = root + "resources" + File.separator + "images"
                    + File.separator +fileName;

UploadClass

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.ds.common;
import java.util.UUID;
public class UploadClass {
    //첨부한 파일명을 받아서 확장자만 리턴
    public static String getExt(String fileName){
        //abc.jpg => .jpg
        //abc.abc.png => .png
        int last = fileName.lastIndexOf(".");
        return fileName.substring(last);
    }
/*"unhappy".substring(2) returns "happy"
 "Harbison".substring(3) returns "bison"
 "emptiness".substring(9) returns "" (an empty string)
*/ 
    public static String getUUid(){
        //일정시점에 문자를 발생시킴
        //ex) kldsjfkjdslfjiejf - djflsj 이런 파일명이라면 - 을 없애버리겠다는 의미
        String tmp = UUID.randomUUID().toString().replaceAll("-""");
        return System.currentTimeMillis()+tmp;
    }
}
cs










댓글 없음:

댓글 쓰기