私が使用してこの機能をパブリックPutObjectRequest(文字列bucketName、 文字列のキー、 のInputStream入力、 ObjectMetadataメタデータ)を可能にhttp://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/PutObjectRequest.html#PutObjectRequest-java.lang.String-java.lang.String-java.io.InputStream-com.amazonaws.services.s3.model.ObjectMetadata-
を見てみましょう:
public String upload(String name, InputStream is, String contentType) throws FileLoadException {
try {
log.debug("Loading file {} into S3 Bucket {}", name, bucketName);
AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withRegion(Regions.EU_WEST_1).build();
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(contentType);
objectMetadata.setCacheControl("public, max-age=31536000");
String filename = String.format("%s/%s", s3Folder, name);
amazonS3.putObject(new PutObjectRequest(bucketName, filename, is, objectMetadata).withCannedAcl(CannedAccessControlList.PublicRead));
log.debug("Image {} upload into S3 Bucket {}", name, bucketName);
return s3BaseUrl + filename;
} catch (Exception e) {
//handle
}
}
を、私はこの依存関係を追加しました:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.11.194</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>