Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- PYTHON
- 외부조인
- 오버라이딩
- 121
- ChainMap
- Oracle
- 백준
- spring
- 청크
- DAO
- 파이썬
- 싱글톤 레지스트리
- overriding
- DAO의 분리
- Spring Framework
- 자바
- orderedDict
- 리스트 자르기
- 개발기록
- 싱글톤
- 데이터베이스
- null
- java
- JIT
- defaultdict
- 쓰는이유
- GCP Storage
- 스프링
- react
- select
Archives
- Today
- Total
PengTory
GCP storgae 이미지 url 다운로드, 그냥 열기 본문
SpringBoot를 사용해 이미지를 함께 저장해야하는 POST API를 만들고 있다.
공부용으로 항상 사용하던 AWS s3 말고 GCP storage를 사용해보고 있다.
GCP storage는 s3와 굉장히 비슷하게 이루어져있는 것 같다.
이번 프로젝트에서도 GCPService 클래스를 만들어 GCP storage에 이미지를 올리고 url을 받아 DB에 저장주는 방식을 사용했다.
파일을 업로드하는 코드는 아래와 같다.
@Service
@Slf4j
public class GCPService {
@Value("${SPRING_GCP_BUCKETNAME}")
private String bucketName;
@Autowired
private Storage storage;
public List<String> uploadFile(List<MultipartFile> multipartFile) throws IOException {
log.info("start GCPService.uploadFile method");
List<String> urlList = new ArrayList<>();
for(MultipartFile file: multipartFile) {
String fileName = file.getOriginalFilename()+ UUID.randomUUID();
BlobId blobId = BlobId.of(bucketName,fileName);
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build();
storage.create(blobInfo, file.getBytes());
urlList.add("https://storage.googleapis.com/" + bucketName + "/" + fileName);
}
return urlList;
}
}
다음 코드를 실행시키면 지정한 버킷에 아래처럼 객체가 들어가게 되고 공개 URL 혹은 인증된 URL을 누르면 이미지가 열리는게 아니라 다운이 되는 것을 확인할 수 있다.
아래와 같이 로컬 환경에 다운로드 된다.
하지만 나는 사진이 다운되는 것이 아니라 열리길 원했다.
위 사진의 메타 데이터를 image/jpeg로 수정하자 원하는대로 사진이 열렸다. 수정한 코드는 아래와 같다.
ContentType을 set으로 지정해주었다.
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("image/jpeg").build();
수정 후 업로드한 객체는 다음과 같다.
그럼 아래에 있는 URL을 다시 눌러보자.
짜잔 귀여운 오목눈이가 나타났다. 성공!
'개발 기록' 카테고리의 다른 글
Slow Letter 개발 기록 (2) _ Backend (1) | 2023.01.17 |
---|---|
Slow Letter 개발기록 (1) _ 준비과정 (0) | 2023.01.17 |
채팅 서비스 프로젝트 시작 (0) | 2023.01.02 |