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 的管理权限



 



 



截图:



 




android 使用oss文件存储 oss存储怎么用_后端


android 使用oss文件存储 oss存储怎么用_上传文件_02


 


 


将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<String> 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();
    }

}