AWS-S3上传下载

拼搏现实的明天。 2022-09-01 09:15 299阅读 0赞
  1. @RestController
  2. public class FileUtils {
  3. // 【你的 access_key】
  4. static final String AWS_ACCESS_KEY = "XXX";
  5. // 【你的 aws_secret_key】
  6. static final String AWS_SECRET_KEY = " XXX";
  7. // 储存桶的名称
  8. static final String BUCKET_NAME = "XXX";
  9. // 设置服务器所属地区
  10. static final Regions REGION = Regions.CN_NORTHWEST_1;
  11. // 储存路径
  12. static final String PATH = "test/";
  13. static final BasicAWSCredentials awsCreds = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
  14. static final AmazonS3 s3 = AmazonS3ClientBuilder.standard()
  15. .withCredentials(new AWSStaticCredentialsProvider(awsCreds)).withRegion(REGION).build();
  16. @PostMapping("/s3")
  17. public String uploadFileToS3(MultipartFile multipartFile, String type)
  18. throws AmazonServiceException, SdkClientException, IOException {
  19. if (multipartFile.isEmpty()) {
  20. return "文件为空";
  21. }
  22. long time = System.currentTimeMillis();
  23. // 拼接下文件路径,为了不会出现文件覆盖现象,加上时间戳
  24. String s3FilePath = PATH
  25. + multipartFile.getOriginalFilename();
  26. ObjectMetadata metadata = new ObjectMetadata();
  27. metadata.setContentType(multipartFile.getContentType());
  28. metadata.setContentLength(multipartFile.getSize());
  29. // 开始上传文件
  30. s3.putObject(BUCKET_NAME, s3FilePath, multipartFile.getInputStream(), metadata);
  31. // 返回文件位置
  32. return s3FilePath;
  33. }
  34. /**
  35. * 用文件路径获取文件下载地址
  36. *
  37. * @param key
  38. * @return
  39. */
  40. @GetMapping("/s3/download")
  41. public ResponseEntity<byte[]> download(String key) throws IOException {
  42. GetObjectRequest getObjectRequest = new GetObjectRequest(BUCKET_NAME, key);
  43. S3Object s3Object =s3.getObject(getObjectRequest);
  44. S3ObjectInputStream objectInputStream = s3Object.getObjectContent();
  45. byte[] bytes = IOUtils.toByteArray(objectInputStream);
  46. HttpHeaders httpHeaders = new HttpHeaders();
  47. httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
  48. httpHeaders.setContentLength(bytes.length);
  49. httpHeaders.setContentDispositionFormData("attachment", key);
  50. return new ResponseEntity<>(bytes, httpHeaders, HttpStatus.OK);
  51. }
  52. }

发表评论

表情:
评论列表 (有 0 条评论,299人围观)

还没有评论,来说两句吧...

相关阅读

    相关 sftp下载

    """使用paramiko模块中的sftp登陆远程主机,实现上传和下载功能""" \ 根据输入参数判断是文件还是目录,进行上传和下载 \ 本地参数local需要与远程参数