对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.99%的数据持久性,99.99%的数据可用性。可用于存储任意类型,任意数量,任意大小的非结构化数据。

Spingboot集成亚马逊 AmazonS3的使用

1、引入pom依赖
<!-- aws对象存储 -->
<dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.11.490</version>
</dependency>
2、yml配置

3、初始化AmazonS3
@Component
@Slf4j
public class AwsS3Component implements InitializingBean {@Value("${aws.accessKey}")private String accessKey;@Value("${aws.secretKey}")private String accessSecret;@Value("${aws.bucket}")private String bucket;@Value("${aws.endpoint}")private String endpoint;private AmazonS3 client;@Overridepublic void afterPropertiesSet() {ClientConfiguration config = new ClientConfiguration();config.setProtocol(Protocol.HTTP);config.disableSocketProxy();this.client = AmazonS3ClientBuilder.standard().withClientConfiguration(config).withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, accessSecret))).withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, Regions.CN_NORTH_1.getName())).enablePathStyleAccess().build();}/*** 执行文件上传** @param file 要上传的文件的路径* @param key  存储文件的路径* @return 文件路径*/public String upload(File file, String key) {client.putObject(new PutObjectRequest(bucket, key, file).withCannedAcl(CannedAccessControlList.PublicRead));GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucket, key);URL url = client.generatePresignedUrl(urlRequest);return url.toString();}/*** 文件流执行文件上传* @param input* @param key* @return* @throws IOException*/public String upload(InputStream input, String key) throws IOException {Date expireDate = new Date(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(30));ObjectMetadata metadata = new ObjectMetadata();metadata.setHttpExpiresDate(expireDate);metadata.setContentLength(input.available());client.putObject(new PutObjectRequest(bucket, key, input, metadata).withCannedAcl(CannedAccessControlList.PublicRead));GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucket, key);URL url = client.generatePresignedUrl(urlRequest);return url.toString();}
4、文件上传实现类
@SneakyThrows
@Override
public ResultDTO awsUpload(MultipartFile file) {//空文件限制if(file.isEmpty()){return ResultDTO.response("上传文件不能为空!");}//文件大小限制,最大单文件20Mif(file.getSize() > fileSize){return ResultDTO.response("上传文件大小超过50M!");}//获取文件md5值String fileMd5 = fileMd5Util.getFileMd5Value(file);String fileName = file.getOriginalFilename();String prefix = fileName.substring(fileName.lastIndexOf(".") + 1);StringBuffer tempFileName = new StringBuffer(fileMd5);tempFileName.append(".").append(prefix);String localFileName = tempFileName.toString();String upload = awsS3Component.upload(file.getInputStream(), localFileName);log.info("文件---[{}]---上传到S3服务器成功!",localFileName);//文件访问路径String url = endpoint + "/"+ bucket + "/" + localFileName;return ResultDTO.requestSuccess(url);
}
5、控制器Controller
@PostMapping(value = "/uploadObjectOSS",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResultDTO uploadObjectOSS(@ApiParam("文件") @RequestPart("file") MultipartFile file) @RequestParam("type") Integer type) throws IOException {return ossService.awsUpload(file);
}
6、获取文件md5值工具类
@Slf4j
@Component
public class FileMd5Util {/*** 文件md5值* @param multipartFile* @return*/public String getFileMd5Value(MultipartFile multipartFile) {InputStream in = null;try {in = multipartFile.getInputStream();byte[] buffer = new byte[2048];MessageDigest digest = MessageDigest.getInstance("MD5");while (true) {int len = in.read(buffer, 0, 2048);if (len != -1) {digest.update(buffer, 0, len);} else {break;}}in.close();byte[] md5Bytes = digest.digest();StringBuffer hexValue = new StringBuffer();for (int i = 0; i < md5Bytes.length; i++) {int val = ((int) md5Bytes[i]) & 0xff;if (val < 16) {hexValue.append("0");}hexValue.append(Integer.toHexString(val));}return hexValue.toString();} catch (Exception e) {log.error("获取文件md5失败");} finally {try {in.close();} catch (IOException ex) {log.error("关闭流异常", ex);}}return null;}}

s3browser客户端快捷方便管理上传之后的文件和文件目录存储结构
1、进入下载页面进行下载

https://s3browser.com/

2、使用客户端进行连接公司亚马逊服务

3、连接成功界面如下

集成aws-s3亚马逊对象存储相关推荐

  1. Springboot 整合常用对象存储工具(asw s3 亚马逊云存储,minio,阿里oss)

    1.引入依赖(gradle) // asw s3 亚马逊云存储implementation 'com.amazonaws:aws-java-sdk-s3:1.11.830'// minio clien ...

  2. 亚马逊各类存储的比较与分析

    亚马逊各类存储的比较与分析 摘要:本文通过对Amazon四大存储类型--Amazon S3.Amazon EBS.Amazon EFS.Amazon S3 Glacier分别的优劣势.适用场景和收费策 ...

  3. S3(亚马逊云)工具类及使用【java】

    S3(亚马逊云)工具类及使用[java] 文章目录 前言 FileServiceImpl AmazonS3Manager S3Config 配置yml maven包 s3配置与使用 前言 提示:这里是 ...

  4. 阿里巴巴 OSS与AWS(亚马逊) S3 和腾讯云cos 存储服务 介绍篇

    前言 对象存储服务,简单来说,可以把它当成一个"网盘",可以上传下载数据,也可以直接在这个"网盘"中对文件进行某些操作. 1.定时或者基于某种条件自动地,每天从 ...

  5. 亚马逊AmazonS3存储概念

    一.什么是AmazonS3 Amazon Simple Storaae Service 是互联网存储解决方案.该服务旨在降低开发人员进行网络规模级计算的难度.         Amazon S3 提供 ...

  6. AWS【亚马逊云】的EC2以及VPC网络框架介绍

    简单介绍 主机 · AWS 上的云主机以 EC2 为单位向外提供. · EC2 分不同的规格,按定时计费.saving plan 等方式收费. · EC2 会免费获得一个ISP自动分配的外网IP,但是 ...

  7. 通过ssh连接aws(亚马逊 云服务器 实例)

    一.Windows用户 windows可以使用PuTTY 和xshell,本文使用xshell. (1)第一步:配置服务器信息 打开xshell,新建连接,在菜单"连接"填写服务器 ...

  8. AWS(亚马逊云) EC2 Linux | ssh 使用密码登录

    AWS EC2 Linux | ssh 使用密码登录 1.使用AWS控制台创建的密钥对或者直接通过网页登录 注意:使用pem私钥不允许直接登录root用户,只能登录默认用户例如:ec2-user ,u ...

  9. Amazon S3 Storage(亚马逊的对象存储)

    目录 概述 设计 对象存储 访问控制 主机托管 日志 实用工具 亚马逊S3存储级别 S3 API和与之竞争的服务 发展历史 概述 亚马逊S3,全称亚马逊简易存储服务(Amazon Simple Sto ...

最新文章

  1. 通信upf是什么意思_5G给边缘计算带来了什么?
  2. 蟑螂背上芯片板子,组队去救人类
  3. Python数据结构与算法(第六天)
  4. 2017中国电商峰会共话“一带一路”网上商机
  5. matplotlib可视化_EDA:Geopandas,Matplotlib和Bokeh中的可视化
  6. android 5.0 新功能,Android 5.0新特性有哪些?安卓5.0新功能汇总
  7. sc925 文档服务器,dell服务器磁盘阵列配置手册.docx
  8. 拳王虚拟项目公社:分享一个大学生上班族都可做的虚拟副业项目
  9. 用 Python 爬了 10 万个产品经理的信息:KPI 多高,锅就有多大!
  10. Atitit.atijson 类库的新特性设计与实现 v3 q31
  11. 中国电信物联网平台入门学习笔记6:电信平台数据模拟采集
  12. Keras nlp入门 imdb电影评论分类
  13. linux游戏主机,Steam OS界面介绍
  14. php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)...
  15. Redis的性能瓶颈
  16. jmeter的apple to sample是什么意思02
  17. 我要悄悄学习,做一个浪漫的程序员
  18. 计算机应用课程设计样式大全,《计算机应用基础》课程设计
  19. FPGA串口接收学习
  20. app打包上传遇到的问题

热门文章

  1. Python PDF文件转Word格式,只需要3秒(附打包)
  2. 女人入洞房那天以后!!
  3. 安装VS2015,总是报错JavaScript_ProjectSystem.msi包丢失
  4. 2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest X-Magic Pair(gcd)
  5. (原創) 04/11/1984 サザン・ウインド (中森明菜)
  6. 华为鸿蒙系统,霸榜 GitHub!
  7. mysql安装失败后怎么彻底删除_MySQL安装失败后如何完全卸载移除MySQL - 收获啦
  8. linux pandas教程_Pandas 学习笔记
  9. 树状自关联 hibernate配置,查询
  10. 2008服务器支持mp4,关于Windows2008服务器设置MIME后仍然无法播放MP4的解决方法