Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1. config, controller, model, repository, service, application.java
  2.  
  3. import com.amazonaws.auth.AWSCredentials;
  4. import com.amazonaws.auth.AWSStaticCredentialsProvider;
  5. import com.amazonaws.auth.BasicAWSCredentials;
  6. import com.amazonaws.services.s3.AmazonS3;
  7. import com.amazonaws.services.s3.AmazonS3ClientBuilder;
  8. import org.springframework.beans.factory.annotation.Value;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11.  
  12. @Configuration
  13. public class AWSConfiguration {
  14.  
  15. @Value("${cloud.aws.credentials.accessKey}")
  16. private String accessKey;
  17.  
  18. @Value("${cloud.aws.credentials.secretKey}")
  19. private String secretKey;
  20.  
  21. @Value("${cloud.aws.region}")
  22. private String region;
  23.  
  24. @Bean
  25. public BasicAWSCredentials basicAWSCredentials() {
  26. return new BasicAWSCredentials(accessKey, secretKey);
  27. }
  28.  
  29. @Bean
  30. public AmazonS3 amazonS3Client(AWSCredentials awsCredentials) {
  31. AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();
  32. builder.withCredentials(new AWSStaticCredentialsProvider(awsCredentials));
  33. builder.setRegion(region);
  34. AmazonS3 amazonS3 = builder.build();
  35. return amazonS3;
  36. }
  37.  
  38. import com.amazonaws.services.s3.AmazonS3;
  39.  
  40.  
  41. import com.amazonaws.services.s3.model.*;
  42. import org.apache.commons.io.IOUtils;
  43. import org.springframework.beans.factory.annotation.Autowired;
  44. import org.springframework.beans.factory.annotation.Value;
  45. import org.springframework.http.HttpHeaders;
  46. import org.springframework.http.HttpStatus;
  47. import org.springframework.http.MediaType;
  48. import org.springframework.http.ResponseEntity;
  49. import org.springframework.stereotype.Service;
  50. import org.springframework.util.StringUtils;
  51. import org.springframework.web.multipart.MultipartFile;
  52.  
  53. import java.io.FileInputStream;
  54. import java.io.FileNotFoundException;
  55. import java.io.IOException;
  56. import java.io.InputStream;
  57. import java.net.URLEncoder;
  58. import java.util.ArrayList;
  59. import java.util.Arrays;
  60. import java.util.List;
  61.  
  62. @Service
  63. public class S3Service {
  64.  
  65. @Autowired
  66. private AmazonS3 amazonS3;
  67.  
  68. @Value("${cloud.aws.s3.bucket}")
  69. private String bucket;
  70.  
  71. private PutObjectResult upload(String filePath, String uploadKey)
  72. throws FileNotFoundException {
  73. return upload(new FileInputStream(filePath), uploadKey);
  74. }
  75.  
  76. private PutObjectResult upload(InputStream inputStream, String uploadKey) {
  77. PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, uploadKey, inputStream, new ObjectMetadata());
  78.  
  79. putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead);
  80.  
  81. PutObjectResult putObjectResult = amazonS3.putObject(putObjectRequest);
  82.  
  83. IOUtils.closeQuietly(inputStream);
  84.  
  85. return putObjectResult;
  86. }
  87.  
  88. public List<PutObjectResult> upload(MultipartFile[] multipartFiles) {
  89. List<PutObjectResult> putObjectResults = new ArrayList<>();
  90.  
  91. Arrays.stream(multipartFiles)
  92. .filter(multipartFile -> !StringUtils.isEmpty(multipartFile.getOriginalFilename()))
  93. .forEach(multipartFile -> {
  94. try {
  95. putObjectResults.add(upload(multipartFile.getInputStream(), multipartFile.getOriginalFilename()));
  96. } catch (IOException e) {
  97. e.printStackTrace();
  98. }
  99. });
  100.  
  101. return putObjectResults;
  102. }
  103.  
  104. public ResponseEntity<byte[]> download(String key) throws IOException {
  105. GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, key);
  106.  
  107. S3Object s3Object = amazonS3.getObject(getObjectRequest);
  108.  
  109. S3ObjectInputStream objectInputStream = s3Object.getObjectContent();
  110.  
  111. byte[] bytes = IOUtils.toByteArray(objectInputStream);
  112.  
  113. String fileName = URLEncoder.encode(key, "UTF-8").replaceAll("\+", "%20");
  114.  
  115. HttpHeaders httpHeaders = new HttpHeaders();
  116. httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
  117. httpHeaders.setContentLength(bytes.length);
  118. httpHeaders.setContentDispositionFormData("attachment", fileName);
  119.  
  120. return new ResponseEntity<>(bytes, httpHeaders, HttpStatus.OK);
  121. }
  122.  
  123. public List<S3ObjectSummary> list() {
  124. ObjectListing objectListing = amazonS3.listObjects(new ListObjectsRequest().withBucketName(bucket));
  125.  
  126. List<S3ObjectSummary> s3ObjectSummaries = objectListing.getObjectSummaries();
  127.  
  128. return s3ObjectSummaries;
  129. }
  130. }
  131.  
  132. 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