Blob 저장
멀티파트폼을 통해서 파일을 받는다.
핵심
javax.sql.rowset.serial.SerialBlob
public String blobTest(@RequestParam("file") MultipartFile file) {
Map<String, Object> param = new HashMap<String, Object>();
//파일이름
String fileName = file.getOriginalFilename();
//
byte[] bytes;
try {
bytes = file.getBytes();
try {
Blob blob = new javax.sql.rowset.serial.SerialBlob(bytes);
logger.debug("length : "+blob.length());
param.put("file", blob);
param.put("file_name", fileName);
param.put("file_size", blob.length());
} catch (SerialException e1) {
e1.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
}
} catch (IOException e2) {
e2.printStackTrace();
}
//디비저장
MYSQL에 컬럼을 blob이나 자신의 타입에 맞는 자료형설정
http://naitas.tistory.com/entry/TINYBLOB-BLOB-MEDIUMBLOB-and-LONGBLOB-%EC%9E%90%EB%A3%8C%ED%98%95
}
//디비 테이블정보
file mediumblob 0
file_size bigint 20
file_name varchar 255
//테스트내용 저장 결과의 일부분
(BLOB) 8.40 KB 8600 d462084f-745a-4be0-ad1b-47693b9785dd.png
(BLOB) 8.82 KB 9036 4c6c1d5e-a9ee-45b4-9da4-b9e12bd2bf91.png
이미지 출력하기
List<Map<String, Object>> resultList = null;
List<String> paramList = new ArrayList<String>();
try {
//자신의 데이터 베이스에서 리스트정보를 가져온다.
resultList = blobService.BlobList();
objModel.addAttribute("resultList", resultList);
Iterator<Map<String, Object>> itr = resultList.iterator();
while (itr.hasNext()) {
Map<String,Object> element = (Map<String, Object>) itr.next();
byte[] encoded=org.apache.commons.codec.binary.Base64.encodeBase64((byte[]) element.get("file"));
String encodedString = new String(encoded);
element.put("base64", encodedString);
paramList.add(encodedString);
logger.debug("FileInfo : " + encodedString);
objModel.addAttribute("image",paramList);
}
} catch (Exception e) {
e.printStackTrace();
}
출력확인
이미지 출력
<br/>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:forEach var="list" items="${resultList}">
1 : ${list.file}<br/>
2 : ${list.file_size}<br/>
3 : ${list.file_name}<br/>
<hr/>
</c:forEach>
<c:forEach var="image" items="${image}">
<img src="data:image/png;base64,${image}">
</c:forEach>
'잡동 > Spring' 카테고리의 다른 글
오랜만에 JSP를 만지면서 기억이 안나는것들 (0) | 2018.11.06 |
---|---|
Eclipse Console 로그출력 늘리기 (0) | 2018.11.02 |
java.sql.SQLException: The server time zone value '´???¹?±¹ ???ؽ?' is unrecognized or represents more than one time zone. (0) | 2018.10.24 |
Unknown system variable 'query_cache_size' (0) | 2018.10.24 |
Tomcat설치 (0) | 2018.08.10 |