나의 개발 성장일지

스프링부트-s3연동 -스프링부트 본문

개인 프로젝트/쇼핑몰 만드는 과정

스프링부트-s3연동 -스프링부트

qkq5821 2022. 12. 17. 12:16

전체적인흐름

 

1.aws 디펜던시 추가

2.yml에 버킷이름,지역,엑세스키,시크릿키 저장해두기

 

3.컨트롤러

3-1컨트롤러에서 파일받음

3-2 file이름을 난수+파일이름으로만듬

3-3업로더에 매개변수로넣어줌->url반환

3-4 파일이름과 파일url을 db에저장해줌

 

4.업로드 객체

4-1컨텐츠타입을 메타데이터객체에 넣어서 보내줘야 다운로드가안됨

 

 

 

1-1 dependency

 

1-2 yml설정

 

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://database-1.ccaahmtqyjhj.ap-northeast-2.rds.amazonaws.com/project?serverTimezone=Asia/Seoul
    username: 
    password: 

 
 
cloud:
  aws:
    credentials:
      accessKey: 
      secretKey: 
    s3:
      bucket: 
    region:
      static: ap-northeast-2 # 리전 정보
    stack:
      auto: false

 

 

 

 

1-3파일업로드+객체 url 반환하는 객체

 

@Service
@NoArgsConstructor
public class S3Service {
    private AmazonS3 s3Client;

    @Value("${cloud.aws.credentials.accessKey}")
    private String accessKey;
  
    @Value("${cloud.aws.credentials.secretKey}")
    private String secretKey;

    @Value("${cloud.aws.s3.bucket}")
    private String bucket;

    @Value("${cloud.aws.region.static}")
    private String region;

    @PostConstruct
    public void setS3Client() {
    
        AWSCredentials credentials = new BasicAWSCredentials(this.accessKey, this.secretKey);

        s3Client = AmazonS3ClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .withRegion(this.region)
                .build();
    }

    public String upload(MultipartFile file, String fileName) throws IOException {


       
 ObjectMetadata objectMetadata = new ObjectMetadata();
         objectMetadata.setContentLength(file.getSize());
         objectMetadata.setContentType(file.getContentType());

        s3Client.putObject(new PutObjectRequest(bucket, fileName, file.getInputStream(),objectMetadata )
                .withCannedAcl(CannedAccessControlList.PublicRead));
        

        return s3Client.getUrl(bucket, fileName).toString();
    }

 

 

 

1-4 컨트롤러

'개인 프로젝트 > 쇼핑몰 만드는 과정' 카테고리의 다른 글

12-18일해야할것  (0) 2022.12.18
스프링부트-s3 -s3설정하기  (0) 2022.12.18
AWS-S3 탐색  (0) 2022.12.16
현재까지 보완해야할것  (0) 2022.12.15
깃허브 사용법  (0) 2022.12.15