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 ResultEntity
uploadFileToOSS( 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(); }}
上一篇:一些问题的汇总(持续更新)
下一篇:启动springboot但是不想配置数据库的解决方法

发表评论

最新留言

不错!
[***.144.177.141]2025年04月11日 20时05分40秒