
oss的使用
发布日期:2021-05-07 23:44:03
浏览次数:21
分类:精选文章
本文共 3733 字,大约阅读时间需要 12 分钟。
oss的使用
一 为什么要使用oss
以前我们上传文件时,上传到的其实是服务器,也就是tomcat中。这种当然也可以保存文件,但是他有一些问题,比如Web 应用重新部署导致文件丢失,集群环境下文件难以同步等问题。
而且你上传的文件存在tomcat中,如果文件体积太大也会影响tomcat的执行效率。所以这时候我们必须解决这些问题,你可以搭建一个文件服务器,但是这样做可能成本太高。所以如果不想这么干,那么阿里云oss就是一个不错的选择。
众所周知,阿里巴巴在国内算是顶级的公司,所以他的oss的各方面的问题都是有保证的,并且价格也不高,这是为什么要使用oss的原因。
二使用oss的步骤
1.先开通阿里云账户
2在左侧边栏找到对象存储oss
3开通oss
4 创建bucket
5在bucket中创建目录
6上传文件
三 使用Java操作oss
1创建 AccessKey
[1] 阿里云账号、密码→登录后在网页上操作
AccessKey → Java 程序登录 OSS 进行操作
访问密钥 AccessKey ( AK )相当于登录密码,只是使用场景不同。 AccessKey 用于程序方式调
用云服务 API ,而登录密码用于登录控制台。如果您不需要调用 API ,那么就不需要创建
AccessKey 。
您可以使用 AccessKey 构造一个 API 请求(或者使用云服务 SDK )来操作资源。 AccessKey 包
括 AccessKeyId 和 AccessKeySecret 。
AccessKeyId 用于标识用户,相当于账号。
AccessKeySecret 是用来验证用户的密钥。 AccessKeySecret 必须保密。
警告 禁止使用主账号 AK ,因为主账号 AK 泄露会威胁您所有资源的安全。请使用子账号( RAM
用户) AK 进行操作,可有效降低 AK 泄露的风险。
[2] 创建子账号 AK 的操作步骤
1. 使用主账号登录 RAM 管理控制台。
2. 如果未创建 RAM 用户,在左侧导航栏,单击用户管理,然后单击新建用户,创建 RAM 用
户。如果已创建 RAM 用户,跳过此步骤。
3. 在左侧导航栏,单击用户管理,然后单击需要创建 AccessKey 的用户名,进入用户详情页
面。
4. 在用户 AccessKey 区域,单击创建 AccessKey 。
5. 完成手机验证后,在新建用户 AccessKey 页面,展开 AccessKey 详情,查看 AcessKeyId 和
AccessKeySecret 。然后单击保存 AK 信息,下载 AccessKey 信息。
注意 AccessKey 创建后,无法再通过控制台查看。请您妥善保存 AccessKey ,谨防泄露。
6. 单击该 RAM 用户对应的授权,给 RAM 用户授予相关权限,例如 AliyunOSSFullAccess 将给
RAM 用户授予 OSS 的管理权限
截图:


将oss引入项目
@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class OSSProperties {
private String endPoint;
private String bucketName;
private String accessKeyId;
private String accessKeySecret;
private String bucketDomain;
}
application.yml:
aliyun: oss: access-key-id: LTAI5tFzwkVA55VoAtwowxGX access-key-secret: D9F1Hfrss4KqlgQ9SYgv1qH7dznPg4 bucket-domain: track115.oss-cn-beijing.aliyuncs.com bucket-name: track115 end-point: oss-cn-beijing.aliyuncs.com
加入依赖:
<!-- OSS 客户端 SDK -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.5.0</version>
</dependency>
util工具类方法,在阿里云网站找,然后更改:
public static ResultEntityuploadFileToOSS( String endPoint, String accessKeyId, String accessKeySecret, InputStream inputStream, String bucketName, String bucketDomain, String originalName ){ // 创建OSSClient实例 OSS ossClient = new OSSClientBuilder().build(endPoint,accessKeyId,accessKeySecret); // 生成上传文件的目录,按照日期来划分目录 String folderName = new SimpleDateFormat("yyyyMMdd").format(new Date()); // 生成上传文件在OSS服务器上保存的文件名,通过uuid生成随机uuid,将其中的“-”删去(替换成空字符串) String fileMainName = UUID.randomUUID().toString().replace("-", ""); // 从原始文件名中获取文件扩展名 String extensionName = originalName.substring(originalName.lastIndexOf(".")); // 使用目录、文件主体名称、文件扩展名拼接得到对象名称 String objectName = folderName + "/" + fileMainName + extensionName; try { // 调用OSS客户端对象的方法上传文件并获取响应结果数据 PutObjectResult putObjectResult = ossClient.putObject(bucketName,objectName,inputStream); // 从响应结果中获取具体的响应消息 ResponseMessage responseMessage = putObjectResult.getResponse(); // 根据响应状态判断是否成功 if (responseMessage == null) { // 拼接访问刚刚上传的文件的路径 String ossFileAccessPath = bucketDomain + "/" + objectName; // 返回成功,并带上访问路径 return ResultEntity.successWithData(ossFileAccessPath); }else { // 获取响应状态码 int statusCode = responseMessage.getStatusCode(); // 没有成功 获取错误消息 String errorMessage = responseMessage.getErrorResponseAsString(); return ResultEntity.failed("当前响应状态码=" + statusCode + " 错误消息=" + errorMessage); } } catch (Exception e){ e.printStackTrace(); return ResultEntity.failed(e.getMessage()); } finally { // 关闭OSSClient ossClient.shutdown(); }}
发表评论
最新留言
不错!
[***.144.177.141]2025年04月11日 20时05分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
如何使用google搜索?
2021-05-09
Redis分布式锁的正确实现方式
2021-05-09
设计模式-抽象工厂模式
2021-05-09
IntelliJ IDEA 中,项目文件右键菜单没有svn选项解决办法
2021-05-09
IDEA 调试Java代码的两个技巧
2021-05-09
Vue 数组和对象更新,但视图未更新,背后的故事
2021-05-09
剑指Offer面试题:9.二进制中1的个数
2021-05-09
《你是在做牛做马还是在做主管》- 读书笔记
2021-05-09
重新温习软件设计之路(4)
2021-05-09
MySQL数据库与python交互
2021-05-09
python如何对字符串进行html转义与反转义?
2021-05-09
开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程
2021-05-09
golang基础--类型与变量
2021-05-09
.NetCore外国一些高质量博客分享
2021-05-09
解决WebRTC中不同的浏览器之间适配的问题
2021-05-09
深入理解JavaScript函数
2021-05-09
【spring源码系列】之【xml解析】
2021-05-09
(在模仿中精进数据可视化07)星球研究所大坝分布可视化
2021-05-09