Java blob画像の保存
📌CLOB BLOB
CLOB:文字の大きいオブジェクト
BLOB:バイナリ大オブジェクト(バイナリ)
BLOBでは、LOBはLarge Objectの略で、大量のデータを格納できるデータ型を指す.
Bとは、バイナリの大きなオブジェクト(バイナリ)のことです.
通常は、画像、ビデオ、MP 3などを格納するタイプに指定されます.
📌業務説明
Web上では、画像の大部分がurl形式でsrcにバインドされ、画像タグに格納されますが、他の部門(他のドメイン)が人事チームドメインにアクセスすると、ビジネスにそれぞれ権限が付与されます.
イメージは全従業員によって使用されるため、権限付与時にイメージに不正な変更や削除が行われる可能性があるため、他の権限は追加できません.
他部署とのミーティングでは、画像データをblobタイプに格納してバイナリに変換し、BASE 64 ENCODEで使用する.
(バイナリ変換時に生成される文字列が非常に長いため、dbは重くなります.より多くの状況を理解し、十分な時間があれば、より効果的な方法があるはずです.😥)
📌コード#コード#
try {
//이미지 함수
Image image;
Image resizeImage;
//forMointargetFile 실제 파일이 저장되어 있는 경로
image = ImageIO.read(new File(forMointargetFile));
//이미지 사이즈 조절
resizeImage = image.getScaledInstance(70, 90, Image.SCALE_SMOOTH);
//이미지 객체 생성
BufferedImage newImage = new BufferedImage(70, 90, BufferedImage.TYPE_INT_RGB);
//이미지의 그래픽 객체
Graphics g = newImage.getGraphics();
g.drawImage(resizeImage, 0, 0, null);
g.dispose();
//이미지 출력 , 이미지를 파일출력스트림을 통해 JPG 타입으로 출력
ImageIO.write(newImage, "jpg", new File(forMointargetFile));
//예외처리
} catch (IOException e1) {
// TODO Auto-generated catch block
if(logger.isDebugEnabled() || logger.isInfoEnabled()) logger.debug("Error");
}
//[2]. 2진형태로 변환후 쿼리 날리기
try {
File file = new File(forMointargetFile);
int len;
String query;
//바이트 스트림으로 읽기위한 FileInputStream 객체
FileInputStream fis = new FileInputStream(file);
len = (int)file.length();
Connection conn = null;
//dataSource-Oracle 오라클 접속 정보가 들어있는 Bean
conn = DataSourceUtils.getConnection((DataSource) SpringContextUtil.getBean("dataSource-Oracle"));
//실제 쿼리 (조건절에 직접 파라미터를 넘기지 않고 PreparedStatement 이용해 ? 형태로 변환 가능 )
query = ("UPDATE TEST_TB SET FILE_DATA = ? WHERE TEST_COL = '" + data.get("조건 파라미터")+"'");
PreparedStatement pstmtImage = null;
try {
pstmtImage = conn.prepareStatement(query);
pstmtImage.setBinaryStream(1, fis, len);
pstmtImage.addBatch();
pstmtImage.executeBatch() ;
} catch (SQLException e) {
// TODO Auto-generated catch block
if(logger.isDebugEnabled() || logger.isInfoEnabled()) logger.debug("blob SQLException " + e.getMessage());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
if(logger.isDebugEnabled() || logger.isInfoEnabled()) logger.debug("Exception " + e.getMessage());
}
Reference
この問題について(Java blob画像の保存), 我々は、より多くの情報をここで見つけました https://velog.io/@rlgus0419/자바-blob-이미지-저장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol