07.27

todo

기능 명세 자세하게 작성

인증 filter

사진 보내기

클라이언트 → 서버 사진

방식 B — Presigned URL (직접 업로드, 실무에서 대용량/대량 트래픽에 선호)

클라이언트 → (서버는 URL만 발급) → S3 (직접 전송, 서버 경유 안 함)

java

@GetMapping("/presigned-url")
public String getPresignedUrl(@RequestParam String filename) {
    PutObjectRequest objectRequest = PutObjectRequest.builder()
            .bucket("my-bucket")
            .key("images/" + filename)
            .build();

    PutObjectPresignRequest presignRequest = PutObjectPresignRequest.builder()
            .signatureDuration(Duration.ofMinutes(10))
            .putObjectRequest(objectRequest)
            .build();

    return s3Presigner.presignPutObject(presignRequest).url().toString();
}

클라이언트는 이 URL로 S3에 직접 PUT 요청을 보냅니다.

javascript

await fetch(presignedUrl, {
    method: 'PUT',
    body: file // 서버를 거치지 않고 S3로 바로 전송
});

인증 Filter

image.png