56 lines
2.0 KiB
Java
56 lines
2.0 KiB
Java
package com.baeldung.s3;
|
|
|
|
import com.amazonaws.AmazonClientException;
|
|
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
|
|
import com.amazonaws.event.ProgressListener;
|
|
import com.amazonaws.regions.Regions;
|
|
import com.amazonaws.services.s3.AmazonS3;
|
|
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
|
|
import com.amazonaws.services.s3.model.PutObjectRequest;
|
|
import com.amazonaws.services.s3.transfer.TransferManager;
|
|
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
|
|
import com.amazonaws.services.s3.transfer.Upload;
|
|
|
|
import java.io.File;
|
|
import java.util.concurrent.Executors;
|
|
|
|
public class MultipartUpload {
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
String existingBucketName = "baeldung-bucket";
|
|
String keyName = "my-picture.jpg";
|
|
String filePath = "documents/my-picture.jpg";
|
|
|
|
AmazonS3 amazonS3 = AmazonS3ClientBuilder
|
|
.standard()
|
|
.withCredentials(new DefaultAWSCredentialsProviderChain())
|
|
.withRegion(Regions.DEFAULT_REGION)
|
|
.build();
|
|
|
|
int maxUploadThreads = 5;
|
|
|
|
TransferManager tm = TransferManagerBuilder
|
|
.standard()
|
|
.withS3Client(amazonS3)
|
|
.withMultipartUploadThreshold((long) (5 * 1024 * 1024))
|
|
.withExecutorFactory(() -> Executors.newFixedThreadPool(maxUploadThreads))
|
|
.build();
|
|
|
|
ProgressListener progressListener =
|
|
progressEvent -> System.out.println("Transferred bytes: " + progressEvent.getBytesTransferred());
|
|
|
|
PutObjectRequest request = new PutObjectRequest(existingBucketName, keyName, new File(filePath));
|
|
|
|
request.setGeneralProgressListener(progressListener);
|
|
|
|
Upload upload = tm.upload(request);
|
|
|
|
try {
|
|
upload.waitForCompletion();
|
|
System.out.println("Upload complete.");
|
|
} catch (AmazonClientException e) {
|
|
System.out.println("Error occurred while uploading file");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
} |