반응형
DB에 이미지를 저장하는 방법
1.Blob( Binary Large Object ) : 자료형을 사용하여 저장하는 방식 -> 이진데이터 저장하는 방식
이진 데이터 : 0,1로 이루어진 데이터
데이터베이스의 크기를 증가시키고 성능에 많은 영향을 끼친다.
비용 처리가 크다.
2.Base64 : 64진법 쉽게 생각 아스킨 코드 문자 하나라고 생각하면 된다.
-> 이미지의 이진 데이터를 Text 형태로 바꾸는 Encoding 하는 방법
인코딩 : 원하는 데이터를 암호화하여 읽을 수 없는 형태로 변환 (비밀번호 때 사용함)
데이터 해킹 방지, 부적절한 접근 방지
디코딩 : 인코딩 된 데이터를 원래 형태로 복원하는 과정
주로 데이터 보호, 암호화된 통신, 데이토 압축
일반적으로 이미지를 저장하고 가져오는 방식
장점
- 백에 이미지 등록이 빠름
- 백업이 간단함
- 외부 서비스 의존성이 없음
- 경로만 저장되기 때문에 db 부담이 없음
- 중 소규모 프로젝트가 가능
단점
- 저장 공간의 제약
- 보안 및 백업을 따로 처리
- 요청이 많아지면 속도에게 영향이 있음
이해 가 안되시는 분은 이렇게 한번 작성해 보세요 그러면 눈으로만 읽는 것보다 훨씬 이해가 잘 됩니다.
백엔드 이미지 처리하는 코드
MultipartFile : spring에서 업로드된 파일을 다 둘 때 사용되는 인터페이스로 파일의 이름과 실제 데이터 파일의 크기등 구할 수 있음
@Service
public class ImgFileService {
@Value("${user.dir}")
//user.dir은 특정 파일이 아니라 특정 경로
private String projectPath;
public String convertImgFile(MultipartFile file, String subPath) {
//file : 파일에 관한 정보 , subPath : 경로
String originalFilename = file.getOriginalFilename();
if (originalFilename == null || originalFilename.isEmpty()) {
throw new IllegalArgumentException("Invalid file: file name is missing");
}
String newImgName = UUID.randomUUID().toString() + "_" + originalFilename;
//UUID: 범용 고유 식별자를 의미
//16바이트(128비트)형태의 구조가지면 36개의 자리 + "-"4개러 구성
//중복 되지 않는 유일한 값을 구성할때 주로 사용이 됨
//주로 세션 식별자, 쿠키값, DB키사용
String rootPath = projectPath + "/image/";
String filePath = subPath + "/" + newImgName;
File f = new File(rootPath + subPath);
if (!f.exists() && !f.mkdirs()) {
//f.mkdirs: java api 에서 디렉토리 폴더를 생성하는 메서드
throw new RuntimeException("Failed to create directory: " + f.getAbsolutePath());
}
Path uploadPath = Paths.get(rootPath + filePath);
try {
Files.write(uploadPath, file.getBytes());
} catch (IOException e) {
throw new RuntimeException("Failed to save file: " + e.getMessage(), e);
}
System.out.println("Saving file to: " + uploadPath.toString());
return filePath;
}
}
https://adjh54.tistory.com/142
UUID에 조금 더 자세히 알고 싶으면 클릭!!!
[Java] UUID 이해 및 사용방법
해당 글에서는 UUID에 대해서 이해하며 구조를 파악하여 이를 활용할 수 있는 방법에 대해서 이해를 돕기 위해 작성한 글입니다. 1) UUID(Universally Unique Identifier) 정의 및 구조 1. UUID 정의💡 UUID(
adjh54.tistory.com
반응형
'SpringBoot' 카테고리의 다른 글
서블릿 컨테이너 구조 (0) | 2025.02.18 |
---|---|
JPA 필터 (0) | 2024.12.14 |
final (0) | 2024.11.28 |
Spring Boot 기초 개념 (0) | 2024.11.24 |
Spring boot 기초 개념 동작 원리 (2) | 2024.11.23 |