[S3] 이미지 링크 자꾸 다운로드 됨

2025. 5. 25. 23:56·Server/spring
import java.io.IOException;

@Slf4j
@Component
@RequiredArgsConstructor
public class AmazonS3Manager{

    private final AmazonS3 amazonS3;

    private final AmazonConfig amazonConfig;

    private final UuidRepository uuidRepository;

    public String generateMembersKeyName(Uuid uuid) {
        return amazonConfig.getMemebersPath() + '/' + uuid.getUuid();
    }

    public void deleteFile(String keyName) {
        amazonS3.deleteObject(new DeleteObjectRequest(amazonConfig.getBucket(), keyName));
    }


    public String uploadFile(String keyName, MultipartFile file){
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(file.getSize());
        try {
            amazonS3.putObject(new PutObjectRequest(amazonConfig.getBucket(), keyName, file.getInputStream(), metadata));
        } catch (IOException e){
            log.error("error at AmazonS3Manager uploadFile : {}", (Object) e.getStackTrace());
        }

        return amazonS3.getUrl(amazonConfig.getBucket(), keyName).toString();
    }
}

 

자꾸 생성된 링크가 다운로드 되었다.

 

알고보니 코텐츠 타입 설정을 하지 않았다.

 

 metadata.setContentType(file.getContentType());

 

 

이 코드를 다음과 같이 추가하면 된다.

 

import java.io.IOException;

@Slf4j
@Component
@RequiredArgsConstructor
public class AmazonS3Manager{

    private final AmazonS3 amazonS3;

    private final AmazonConfig amazonConfig;

    private final UuidRepository uuidRepository;

    public String generateMembersKeyName(Uuid uuid) {
        return amazonConfig.getMemebersPath() + '/' + uuid.getUuid();
    }

    public void deleteFile(String keyName) {
        amazonS3.deleteObject(new DeleteObjectRequest(amazonConfig.getBucket(), keyName));
    }


    public String uploadFile(String keyName, MultipartFile file){
        ObjectMetadata metadata = new ObjectMetadata();
        ////////// 여기에 추가 ///////////
        metadata.setContentType(file.getContentType());
        /////////////////////////////////
        metadata.setContentLength(file.getSize());
        try {
            amazonS3.putObject(new PutObjectRequest(amazonConfig.getBucket(), keyName, file.getInputStream(), metadata));
        } catch (IOException e){
            log.error("error at AmazonS3Manager uploadFile : {}", (Object) e.getStackTrace());
        }

        return amazonS3.getUrl(amazonConfig.getBucket(), keyName).toString();
    }
}

'Server > spring' 카테고리의 다른 글

[spring/JUnit] Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 에러  (3) 2025.08.16
[CICD] SpringBoot + Github Action + EC2 배포  (0) 2025.01.05
[spring] jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.<init>(java.lang.Object)' 에러 해결  (0) 2025.01.02
[spring/IntelliJ] error: Attempt to recreate a file for type ~  (0) 2025.01.02
[spring] Cannot resolve method 'assertThat' in 'Assertions'  (0) 2024.11.29
'Server/spring' 카테고리의 다른 글
  • [spring/JUnit] Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 에러
  • [CICD] SpringBoot + Github Action + EC2 배포
  • [spring] jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.<init>(java.lang.Object)' 에러 해결
  • [spring/IntelliJ] error: Attempt to recreate a file for type ~
월월
월월
  • 월월
    서벅돌의 성장일기
    월월
  • 전체
    오늘
    어제
    • 분류 전체보기 (121)
      • TIL (2)
      • Server (29)
        • spring (8)
        • node.js (16)
        • 기타 (5)
      • App&Web (17)
        • Web (1)
        • Android (16)
        • iOS (0)
      • 공부 (59)
        • 깃&깃허브 (3)
        • 파이썬 (17)
        • 유니티 (4)
        • 자료구조 | 알고리즘 (15)
        • 자바 (3)
        • 운영체제 (8)
        • AI와 데이터 (9)
      • 대외활동 (12)
        • NPC 동아리 (1)
        • UMC 동아리 (11)
      • 대학교 (1)
        • 교직 (1)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글 관리
  • 링크

  • 공지사항

    • Notice
  • 인기 글

  • 태그

    mysql
    kotlin
    Python
    Android
    유니티
    Unity
    C
    자바
    파이썬
    안드로이드
    루아
    java
    코틀린
    Lua
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
월월
[S3] 이미지 링크 자꾸 다운로드 됨
상단으로

티스토리툴바