Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- config, controller, model, repository, service, application.java
- import com.amazonaws.auth.AWSCredentials;
- import com.amazonaws.auth.AWSStaticCredentialsProvider;
- import com.amazonaws.auth.BasicAWSCredentials;
- import com.amazonaws.services.s3.AmazonS3;
- import com.amazonaws.services.s3.AmazonS3ClientBuilder;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- public class AWSConfiguration {
- @Value("${cloud.aws.credentials.accessKey}")
- private String accessKey;
- @Value("${cloud.aws.credentials.secretKey}")
- private String secretKey;
- @Value("${cloud.aws.region}")
- private String region;
- @Bean
- public BasicAWSCredentials basicAWSCredentials() {
- return new BasicAWSCredentials(accessKey, secretKey);
- }
- @Bean
- public AmazonS3 amazonS3Client(AWSCredentials awsCredentials) {
- AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();
- builder.withCredentials(new AWSStaticCredentialsProvider(awsCredentials));
- builder.setRegion(region);
- AmazonS3 amazonS3 = builder.build();
- return amazonS3;
- }
- import com.amazonaws.services.s3.AmazonS3;
- import com.amazonaws.services.s3.model.*;
- import org.apache.commons.io.IOUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.MediaType;
- import org.springframework.http.ResponseEntity;
- import org.springframework.stereotype.Service;
- import org.springframework.util.StringUtils;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URLEncoder;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- @Service
- public class S3Service {
- @Autowired
- private AmazonS3 amazonS3;
- @Value("${cloud.aws.s3.bucket}")
- private String bucket;
- private PutObjectResult upload(String filePath, String uploadKey)
- throws FileNotFoundException {
- return upload(new FileInputStream(filePath), uploadKey);
- }
- private PutObjectResult upload(InputStream inputStream, String uploadKey) {
- PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, uploadKey, inputStream, new ObjectMetadata());
- putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead);
- PutObjectResult putObjectResult = amazonS3.putObject(putObjectRequest);
- IOUtils.closeQuietly(inputStream);
- return putObjectResult;
- }
- public List<PutObjectResult> upload(MultipartFile[] multipartFiles) {
- List<PutObjectResult> putObjectResults = new ArrayList<>();
- Arrays.stream(multipartFiles)
- .filter(multipartFile -> !StringUtils.isEmpty(multipartFile.getOriginalFilename()))
- .forEach(multipartFile -> {
- try {
- putObjectResults.add(upload(multipartFile.getInputStream(), multipartFile.getOriginalFilename()));
- } catch (IOException e) {
- e.printStackTrace();
- }
- });
- return putObjectResults;
- }
- public ResponseEntity<byte[]> download(String key) throws IOException {
- GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, key);
- S3Object s3Object = amazonS3.getObject(getObjectRequest);
- S3ObjectInputStream objectInputStream = s3Object.getObjectContent();
- byte[] bytes = IOUtils.toByteArray(objectInputStream);
- String fileName = URLEncoder.encode(key, "UTF-8").replaceAll("\+", "%20");
- HttpHeaders httpHeaders = new HttpHeaders();
- httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
- httpHeaders.setContentLength(bytes.length);
- httpHeaders.setContentDispositionFormData("attachment", fileName);
- return new ResponseEntity<>(bytes, httpHeaders, HttpStatus.OK);
- }
- public List<S3ObjectSummary> list() {
- ObjectListing objectListing = amazonS3.listObjects(new ListObjectsRequest().withBucketName(bucket));
- List<S3ObjectSummary> s3ObjectSummaries = objectListing.getObjectSummaries();
- return s3ObjectSummaries;
- }
- }
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.cloud.aws.context.support.io.ResourceLoaderBeanPostProcessor#0': Cannot resolve reference to bean 'amazonS3' while setting constructor argument;"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement