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();
}
}