SpringBootでS3にアップロード
Clientらしきもの
UploadService.java
private AmazonS3 getAmazons3() {
return AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey)))
.withRegion(region)
.build();
}
S3にアップロード
UploadService.java
public String putObject(MultipartFile file, String fileName) {
try {
InputStream inputStream = file.getInputStream();
String path = 『保存する名前、ここでランダムの名前生成など』
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(file.getContentType());
objectMetadata.setContentLength(Integer.valueOf(inputStream.available()).longValue());
getAmazons3().putObject(bucketName, path, inputStream, objectMetadata);
アップロードしたものを特別取得URLを生成して返してくる
アップロードされたものを限定しないと、特別scriptなどのリンクが生成されてアクセスすると実行されてしまうので要注意!
UploadService.java
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, path)
.withMethod(HttpMethod.GET);
final URL fileUrl = getAmazons3().generatePresignedUrl(generatePresignedUrlRequest);
return fileUrl.toString();
}catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}