나의 개발 성장일지
스프링부트-s3연동 -스프링부트 본문
전체적인흐름
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 |