阿里云存储OSS《快速使用》

导读:本篇文章讲解 阿里云存储OSS《快速使用》,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、快速使用

1、注册账号并实名验证

2、搜索找到对象存储OSS,开通OSS服务

3、查看官方文档


二、具体使用

1、 注册阿里云账号和实名认证

(1)网址:https://www.aliyun.com/

(2)可以使用支付宝注册,现在还提供了钉钉注册方式

(3)注册成功后需要实名认证才能开通“对象存储OSS”服务

阿里云存储OSS《快速使用》

2、开通“对象存储OSS”服务

直接搜索找到【对象存储OSS】,开通OSS服务

阿里云存储OSS《快速使用》

3、控制台的使用

(1)开通服务后,进入控制台

阿里云存储OSS《快速使用》

(2)手动创建bucket

 1)通过【创建Bucket】进行新建

bucket名称:自定义;

地域:系统会自动选择最优的,默认即可;

同城冗余存储:关闭,选择启动是要收费的;

读写权限:根据需要来选择;这里会为了后续讲解,会选择“公共读”

如果只是学习,基本上都默认即可

阿里云存储OSS《快速使用》

2)点击确定,这样我们就手动创建好了一个bucket

3)这时,我们可以试着上传文件了,阿里云是提供了两种访问方式,一种是后台管理系统,一种是API

阿里云存储OSS《快速使用》

 当然,在日常的开发中,是使用api的,因为你不可能叫用户打开阿里云去上传文件

 3)如果想删除bucket

阿里云存储OSS《快速使用》

(3)权限的设置

1)因为我们前面创建选择的读写权限是“公共读”,所以后续我们是需要设置AccessKey的

阿里云存储OSS《快速使用》

 2)进入AccessKey 管理

阿里云存储OSS《快速使用》

3)在使用AccessKey时,我们通常的做法是创建子用户key,不同的服务开通不同的子key,这样会更安全

阿里云存储OSS《快速使用》

4)开通子用户AccessKey

①做编程的要勾上Open API…

阿里云存储OSS《快速使用》

②验证

阿里云存储OSS《快速使用》

 ③创建子用户成功

阿里云存储OSS《快速使用》

注意:这时我们最后把key账号和密钥复制下来,找个地方存好备用,因为后面会直接给你隐藏掉了

阿里云存储OSS《快速使用》

 或者直接下载下来也可以

阿里云存储OSS《快速使用》

④最后为用户添加权限

如果没有添加权限,后面开发时,就会经常报错“没有权限”

阿里云存储OSS《快速使用》

 如果是平时的简单使用,到这里就可以了,如果需要做开发的,下面才是重要的。

4、查阅阿里云API(最核心)

做开发的怎么能离开开发文档呢

(1)进入oss学习路径 

阿里云存储OSS《快速使用》

(2)根据自己的开发语言选择SDK

因为我是写Java的,所以用Java SDK

阿里云存储OSS《快速使用》

(3)Java SDK概要

从Java SDK进来后,可以看到里面有着方方面面的介绍

阿里云存储OSS《快速使用》

5、一个简单的示例(Java创建bucket)

以下都可以通过查阅官方文档实现

(1)检查自己的jdk版本,要求是1.7及以上版本

(2)创建一个Maven项目

阿里云存储OSS《快速使用》

阿里云存储OSS《快速使用》

(2)安装sdk

这里是使用的是Maven项目,所以直接安装依赖即可

阿里云存储OSS《快速使用》

    <dependencies>
        <!--aliyunOSS-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

阿里云存储OSS《快速使用》

 然后等待下载好依赖,即可做一些简单的操作

(3)Java创建bucket

①查阅官方文档-创建存储空间

阿里云存储OSS《快速使用》

 ②复制示例代码,然后根据之前保存的我们自己的AccessKey来修改即可,具体如下:

阿里云存储OSS《快速使用》

主要修改这几个即可
String endpoint
String accessKeyId 
String accessKeySecret 
String bucketName 
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.CreateBucketRequest;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = "yourAccessKeyId";
        String accessKeySecret = "yourAccessKeySecret";
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
            // 创建CreateBucketRequest对象。
            CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);

            // 如果创建存储空间的同时需要指定存储类型和数据容灾类型, 请参考如下代码。
            // 此处以设置存储空间的存储类型为标准存储为例介绍。
            //createBucketRequest.setStorageClass(StorageClass.Standard);
            // 数据容灾类型默认为本地冗余存储,即DataRedundancyType.LRS。如果需要设置数据容灾类型为同城冗余存储,请设置为DataRedundancyType.ZRS。
            //createBucketRequest.setDataRedundancyType(DataRedundancyType.ZRS);
            // 设置存储空间的权限为公共读,默认为私有。
            //createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);

            // 创建存储空间。
            ossClient.createBucket(createBucketRequest);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

②判断bucket是否存在

如果有以下报错就是bucket已经存在了

<Error>
  <Code>BucketAlreadyExists</Code>
  <Message>The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.</Message>
  <RequestId>623436******23630228039</RequestId>
  <HostId>xbao-1.oss-cn-beijing.aliyuncs.com</HostId>
  <BucketName>xbao-1</BucketName>
</Error>

阿里云存储OSS《快速使用》

③设置读写权限

默认创建出来的是“私有”项目,而我们想要的是“公共读”,所以就需要设置读写权限

阿里云存储OSS《快速使用》

(4)在实际开发中的文件上传(springcloud)

1)在中application.yml的配置

aliyun:
  oss:
    endpoint: 你的endponit
    keyid: 你的阿里云keyid
    keysecret: 你的阿里云keysecret
    bucketname: 你的阿里云bucket

2)定义工具类从配置文件中读取常量

@Data:lombok的注解
@Component: 加载到spring中
@ConfigurationProperties(prefix=”aliyun.oss”):读取前缀是aliyun.oss的配置,根据名字endpoint、keyid等匹配赋值常量

@Data
@Component
@ConfigurationProperties(prefix="aliyun.oss")
public class OssProperties {
    private String endpoint;
    private String keyid;
    private String keysecret;
    private String bucketname;
}

3)文件上传的业务接口

public interface FileService {
    /**
     * 阿里云oss文件上传
     * @param inputStream 输入流
     * @param module 文件夹名称
     * @param originalFilename 原始文件名称
     * @return 文件在oss服务器上的url地址
     */
    String upload(InputStream inputStream, String module, String originalFilename);
}
@Service
public class FileServiceImpl implements FileService {


    @Autowired
    private OssProperties ossProperties;

    @Override
    public String upload(InputStream inputStream, String module, String originalFilename) {

        // 读取配置
        String endpoint = ossProperties.getEndpoint();
        String keyid = ossProperties.getKeyid();
        String keysecret = ossProperties.getKeysecret();
        String bucketname = ossProperties.getBucketname();

        //判断oss实例是否存在:如果不存在则创建,如果存在则获取
        OSS ossClient = new OSSClientBuilder().build(endpoint, keyid, keysecret);
        if (!ossClient.doesBucketExist(bucketname)) {
            //创建bucket
            ossClient.createBucket(bucketname);
            //设置oss实例的访问权限:公共读
            ossClient.setBucketAcl(bucketname, CannedAccessControlList.PublicRead);
        }

        //构建日期路径
        String folder = new DateTime().toString("yyyy/MM/dd");

        //文件名:uuid.扩展名
        String fileName = UUID.randomUUID().toString();
        String fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));
        String key = module + "/" + folder + "/" + fileName + fileExtension;

        //文件上传至阿里云
        ossClient.putObject(ossProperties.getBucketname(), key, inputStream);

        // 关闭OSSClient。
        ossClient.shutdown();

        //返回url地址
        return "https://" + bucketname + "." + endpoint + "/" + key;
    }
}

具体需要什么,查阅官方文档很快就能找到demo。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117635.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!