当前位置:   article > 正文

ASW的S3上传文件(java)_java s3上传文件命保持原名

java s3上传文件命保持原名

将业务的代码简化一下,写成一个带页面方便测试的小demo.

首先用的spring boot项目,在resources文件夹下的static文件夹下创建一个index.html页面,用于简单的文件上传,html页面如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>文件上传</title>
  6. </head>
  7. <body>
  8. <form enctype="multipart/form-data" method="post" action="/fileUpload_i18n/uploadFile">
  9. 测试文件上传接口使用:<br/>
  10. 文件:<input type="file" name="file"/>
  11. <input type="submit" value="上传"/>
  12. </form>
  13. </body>
  14. </html>

启动项目,访问页面:

虽然比较丑,但还可以将就着用 = =

接着写Controller层的代码:

  1. @Slf4j
  2. @RequestMapping("/uploadTest")
  3. public class UploadController {
  4. private String accessKeyID ="accessKeyID";
  5. private String secretKey = "secretKey";
  6. //S3上桶的名称
  7. private String bucketName = "bucketName";
  8. //所属地区
  9. private String region = "region";
  10. /**
  11. * 上传文件
  12. * @param multipartFile
  13. * @return
  14. * @throws Exception
  15. */
  16. @RequestMapping("/uploadFile")
  17. public String uploadFile(@RequestParam("file") MultipartFile multipartFile) throws Exception {
  18. if (multipartFile.isEmpty()) {
  19. return "上传文件不能为空";
  20. }
  21. //生成随机文件名
  22. String localFileName = UUID.randomUUID() + "." + multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".") + 1);
  23. Date date = new Date();
  24. SimpleDateFormat formatter_yyyy = new SimpleDateFormat("yyyy");
  25. SimpleDateFormat formatter_MM = new SimpleDateFormat("MM");
  26. //在随机名前加上年月
  27. String s3FileFullPath = formatter_yyyy.format(date) + "/" + formatter_MM.format(date) + "/" + localFileName;
  28. //获取S3Client对象
  29. AWSCredentials awsCredentials = new BasicAWSCredentials(accessKeyID, secretKey);
  30. AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials));
  31. builder.setRegion(region);
  32. AmazonS3 s3Client = builder.build();
  33. ObjectMetadata metadata = new ObjectMetadata();
  34. metadata.setContentType(multipartFile.getContentType());
  35. metadata.setContentLength(multipartFile.getSize());
  36. try {
  37. //开始上传文件
  38. //s3FileFullPath作为该文件的唯一标识符key
  39. PutObjectResult putResult = s3Client.putObject(bucketName, s3FileFullPath, multipartFile.getInputStream(), metadata);
  40. System.out.println("【流方式】上传MumbaiS3完成,md5:" + putResult.getETag() + ",S3文件:" + s3FileFullPath);
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. //返回文件在S3上的key
  45. return s3FileFullPath;
  46. }
  47. }

然后我们随便选一个图片上传,发现控制台上打印出:

然后再去S3上相应的bucket上查看,发现有我们的图片.

到此,S3文件上传功能完成.

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/285820
推荐阅读
相关标签
  

闽ICP备14008679号