Last active
October 26, 2022 02:24
-
-
Save chrisegb/dc704407a6be0f466ec40e671b20da51 to your computer and use it in GitHub Desktop.
This is a Spring Boot Service class that uses an Amazon dependency added from Maven.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.your.package; | |
import java.io.File; | |
import java.io.FileOutputStream; | |
import java.io.IOException; | |
import javax.annotation.PostConstruct; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.core.io.ResourceLoader; | |
import org.springframework.stereotype.Service; | |
import org.springframework.web.multipart.MultipartFile; | |
import com.amazonaws.auth.AWSCredentials; | |
import com.amazonaws.auth.AWSStaticCredentialsProvider; | |
import com.amazonaws.auth.BasicAWSCredentials; | |
import com.amazonaws.regions.Regions; | |
import com.amazonaws.services.s3.AmazonS3; | |
import com.amazonaws.services.s3.AmazonS3ClientBuilder; | |
import com.amazonaws.services.s3.model.CannedAccessControlList; | |
import com.amazonaws.services.s3.model.DeleteObjectRequest; | |
import com.amazonaws.services.s3.model.PutObjectRequest; | |
@Service | |
public class AmazonComponent { | |
private AmazonS3 s3client; | |
private String ENDPOINT_URL = "https://s3.amazonaws.com"; | |
private String BUCKET_NAME = "******"; | |
private String ACCESS_KEY = "*******"; | |
private String SECRET_KEY = "*******"; | |
@Autowired | |
ResourceLoader resourceLoader; | |
@PostConstruct | |
private void initializeAmazon() { | |
AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY); | |
s3client = AmazonS3ClientBuilder | |
.standard() | |
.withCredentials(new AWSStaticCredentialsProvider(credentials)) | |
.withRegion(Regions.US_EAST_1) | |
.build(); | |
} | |
private File convertMultiPartToFile(MultipartFile file) throws IOException { | |
File convFile = new File(file.getOriginalFilename()); | |
FileOutputStream fos = new FileOutputStream(convFile); | |
fos.write(file.getBytes()); | |
fos.close(); | |
return convFile; | |
} | |
private String generateFileName(MultipartFile multiPart) { | |
return multiPart.getOriginalFilename().replace(" ", "_"); | |
} | |
private void uploadFileTos3bucket(String fileName, File file) { | |
s3client.putObject(new PutObjectRequest(BUCKET_NAME, fileName, file) | |
.withCannedAcl(CannedAccessControlList.PublicRead)); | |
} | |
public String uploadFile(MultipartFile multipartFile) { | |
String fileUrl = ""; | |
try { | |
File file = convertMultiPartToFile(multipartFile); | |
String fileName = generateFileName(multipartFile); | |
fileUrl = "https://" + BUCKET_NAME + "." + ENDPOINT_URL + "/" + fileName; | |
uploadFileTos3bucket(fileName, file); | |
file.delete(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
return fileUrl; | |
} | |
public String deleteFileFromS3Bucket(String fileUrl) { | |
String fileName = fileUrl.substring(fileUrl.lastIndexOf("/") + 1); | |
s3client.deleteObject(new DeleteObjectRequest(BUCKET_NAME, fileName)); | |
return "Successfully deleted"; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment