集成aws-s3亚马逊对象存储
对象存储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亚马逊对象存储相关推荐
- Springboot 整合常用对象存储工具(asw s3 亚马逊云存储,minio,阿里oss)
1.引入依赖(gradle) // asw s3 亚马逊云存储implementation 'com.amazonaws:aws-java-sdk-s3:1.11.830'// minio clien ...
- 亚马逊各类存储的比较与分析
亚马逊各类存储的比较与分析 摘要:本文通过对Amazon四大存储类型--Amazon S3.Amazon EBS.Amazon EFS.Amazon S3 Glacier分别的优劣势.适用场景和收费策 ...
- S3(亚马逊云)工具类及使用【java】
S3(亚马逊云)工具类及使用[java] 文章目录 前言 FileServiceImpl AmazonS3Manager S3Config 配置yml maven包 s3配置与使用 前言 提示:这里是 ...
- 阿里巴巴 OSS与AWS(亚马逊) S3 和腾讯云cos 存储服务 介绍篇
前言 对象存储服务,简单来说,可以把它当成一个"网盘",可以上传下载数据,也可以直接在这个"网盘"中对文件进行某些操作. 1.定时或者基于某种条件自动地,每天从 ...
- 亚马逊AmazonS3存储概念
一.什么是AmazonS3 Amazon Simple Storaae Service 是互联网存储解决方案.该服务旨在降低开发人员进行网络规模级计算的难度. Amazon S3 提供 ...
- AWS【亚马逊云】的EC2以及VPC网络框架介绍
简单介绍 主机 · AWS 上的云主机以 EC2 为单位向外提供. · EC2 分不同的规格,按定时计费.saving plan 等方式收费. · EC2 会免费获得一个ISP自动分配的外网IP,但是 ...
- 通过ssh连接aws(亚马逊 云服务器 实例)
一.Windows用户 windows可以使用PuTTY 和xshell,本文使用xshell. (1)第一步:配置服务器信息 打开xshell,新建连接,在菜单"连接"填写服务器 ...
- AWS(亚马逊云) EC2 Linux | ssh 使用密码登录
AWS EC2 Linux | ssh 使用密码登录 1.使用AWS控制台创建的密钥对或者直接通过网页登录 注意:使用pem私钥不允许直接登录root用户,只能登录默认用户例如:ec2-user ,u ...
- Amazon S3 Storage(亚马逊的对象存储)
目录 概述 设计 对象存储 访问控制 主机托管 日志 实用工具 亚马逊S3存储级别 S3 API和与之竞争的服务 发展历史 概述 亚马逊S3,全称亚马逊简易存储服务(Amazon Simple Sto ...
最新文章
- 通信upf是什么意思_5G给边缘计算带来了什么?
- 蟑螂背上芯片板子,组队去救人类
- Python数据结构与算法(第六天)
- 2017中国电商峰会共话“一带一路”网上商机
- matplotlib可视化_EDA:Geopandas,Matplotlib和Bokeh中的可视化
- android 5.0 新功能,Android 5.0新特性有哪些?安卓5.0新功能汇总
- sc925 文档服务器,dell服务器磁盘阵列配置手册.docx
- 拳王虚拟项目公社:分享一个大学生上班族都可做的虚拟副业项目
- 用 Python 爬了 10 万个产品经理的信息:KPI 多高,锅就有多大!
- Atitit.atijson 类库的新特性设计与实现 v3 q31
- 中国电信物联网平台入门学习笔记6:电信平台数据模拟采集
- Keras nlp入门 imdb电影评论分类
- linux游戏主机,Steam OS界面介绍
- php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)...
- Redis的性能瓶颈
- jmeter的apple to sample是什么意思02
- 我要悄悄学习,做一个浪漫的程序员
- 计算机应用课程设计样式大全,《计算机应用基础》课程设计
- FPGA串口接收学习
- app打包上传遇到的问题
热门文章
- Python PDF文件转Word格式,只需要3秒(附打包)
- 女人入洞房那天以后!!
- 安装VS2015,总是报错JavaScript_ProjectSystem.msi包丢失
- 2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest X-Magic Pair(gcd)
- (原創) 04/11/1984 サザン・ウインド (中森明菜)
- 华为鸿蒙系统,霸榜 GitHub!
- mysql安装失败后怎么彻底删除_MySQL安装失败后如何完全卸载移除MySQL - 收获啦
- linux pandas教程_Pandas 学习笔记
- 树状自关联 hibernate配置,查询
- 2008服务器支持mp4,关于Windows2008服务器设置MIME后仍然无法播放MP4的解决方法