当前位置:   article > 正文

亚马逊 AmazonS3文件上传_amazon 上传附件代码

amazon 上传附件代码
首先导入依赖
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.837</version>
</dependency>
主要配置声明
  1. //密匙
  2. private static final String ACCESS_KEY = "*";
  3. //私钥
  4. private static final String SECRET_KEY = "*";
  5. //储存桶的名称
  6. private static final String BUCKET_NAME = "*";
  7. //所属地区
  8. private static final String REGION = "*";
  9. //域名地址
  10. private static final String HUR = "*";
  11. private static final BasicAWSCredentials AWS_CREDS = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
  12. private static final AmazonS3 s3 = AmazonS3ClientBuilder.standard()
  13. .withCredentials(new AWSStaticCredentialsProvider(AWS_CREDS))
  14. //设置服务器所属地区
  15. .withRegion(REGION)
  16. .build();
主要代码
  1. /**
  2. *
  3. * @param file 文件
  4. * @return
  5. */
  6. public JsonObject adds3ShrinkImg(MultipartFile file) {
  7. // 文件后缀
  8. String fileNameSuffix = getSuffix(Objects.requireNonNull(file.getOriginalFilename()));
  9. String url = JsonUtil.toJson(fileSuffix);
  10. ObjectMetadata objectMetadata = new ObjectMetadata();
  11. objectMetadata.setContentType(file.getContentType());
  12. objectMetadata.setContentLength(file.getSize());
  13. //文件夹
  14. String folder = "test/";
  15. //生成新的文件名
  16. String img = folder + randomName() + "." + fileNameSuffix;
  17. try {
  18. //开始上传文件
  19. s3.putObject(new PutObjectRequest(BUCKET_NAME, img, file.getInputStream(), objectMetadata));
  20. //压缩操作
  21. //下载原图
  22. S3Object s3object = s3.getObject(BUCKET_NAME, img);
  23. S3ObjectInputStream inputStream = s3object.getObjectContent();
  24. BufferedImage originalImage = ImageIO.read(inputStream.getDelegateStream());
  25. int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
  26. int width = originalImage.getWidth();
  27. int height = originalImage.getHeight();
  28. // 缩略图宽度
  29. int newWidth = 215;
  30. // 缩略图高度
  31. int newHeight = (int) Math.round(height * newWidth / (double) width);
  32. BufferedImage resizedImage = new BufferedImage(newWidth, newHeight, type);
  33. Graphics2D g = resizedImage.createGraphics();
  34. g.drawImage(originalImage, 0, 0, newWidth, newHeight, null);
  35. g.dispose();
  36. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  37. ImageIO.write(resizedImage, fileNameSuffix, baos);
  38. byte[] bytes = baos.toByteArray();
  39. ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
  40. // 上传缩略图
  41. ObjectMetadata metadata = new ObjectMetadata();
  42. metadata.setContentLength(bytes.length);
  43. metadata.setContentType(file.getContentType());
  44. //生成压缩后文件名
  45. String originalIma = folder + randomName()+newWidth+"."+fileNameSuffix;
  46. //开始上传文件
  47. s3.putObject(new PutObjectRequest(BUCKET_NAME, originalIma, bais, metadata));
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. }
  51. JsonObject objoect = new JsonObject();
  52. objoect.addProperty("url",HUR + img);
  53. return objoect;
  54. }
  55. /**
  56. * 生成随机数
  57. * @return
  58. */
  59. private static String randomName() {
  60. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  61. String date = sdf.format(new Date());
  62. int i = (int) ((Math.random() * 9 + 1) * 10000);
  63. return date + i;
  64. }
  65. /**
  66. * 获取文件后缀
  67. *
  68. * @param fileName
  69. * @return
  70. */
  71. public static String getSuffix(String fileName) {
  72. return fileName.substring(fileName.lastIndexOf(".") + 1);
  73. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号