当前位置:   article > 正文

oss存储使用

oss存储

阿里云提供了5种使用oss存储的方式,包括控制台、命令行、图形化管理工具ossbrowser、SDK、REST API;这里仅对在下常用的命令行、javasdk进行一些说明,其他的不一一详细说明,感兴趣的可以去官网看相关文档和指导视频

官网文档地址:如何使用OSS控制台、ossutil、ossbrowser、OSSSDK_对象存储-阿里云帮助中心

一、控制台:

可以通过OSS控制台完成常见的基础操作,例如创建存储空间(Bucket)、上传和下载文件(Object)等。

OSS控制台使用流程图如下所示:

  1. 开通OSS服务
  2. 创建存储空间
  3. 上传文件

文件上传至目标Bucket后,您可以执行如下操作:

  • 将文件下载至本地。详情请参见下载文件
  • 通过生成签名URL的方式将文件分享给第三方,供其下载或预览。详情请参见分享文件
  • 通过自定义域名(自有域名)访问文件,需要将自定义域名绑定至文件所在的Bucket。详情请参见使用自有域名访问OSS资源。 

二、命令行

需要五步:

1、安装ossuntil

        下载和安装:

                运行环境:Windows、Linux、macOS

                支持架构:x86(32bit、64bit)、ARM(32bit、64bit

        下载地址:   ossutil1.7.8版本基于Golang 1.16版本编译,不支持通过macOS x86 32bit操作系统使用ossutil。因此,ossutil1.7.8及以上版本均不再提供ossutilmac32安装包。

根据您的操作系统下载对应版本,然后按如下步骤安装并配置ossutil,以下均以64位系统为例。

安装:(以linux为例,其他看官网文档)

        

2、Linux系统安装

  1. 运行以下命令下载ossutil。
    wget https://gosspublic.alicdn.com/ossutil/1.7.14/ossutil64                           

    注意 复制下载地址时会自动加上spm编码内容,使用wget命令下载时注意删除链接中?spm=xxxx的内容。

  2. 运行以下命令修改文件执行权限。
    chmod 755 ossutil64
  3. 使用交互式配置生成配置文件。
    1. 输入配置命令。
      ./ossutil64 config
    2. 根据提示设置配置文件路径。建议直接按回车使用默认配置文件的路径。
      1. 请输入配置文件名,文件名可以带路径(默认为:/home/user/.ossutilconfig,回车将使用默认路径。
      2. 如果用户设置为其它路径,在使用命令时需要将--config-file选项设置为该路径):

      ossutil默认使用/home/user/.ossutilconfig作为配置文件,若您设置了配置文件的路径,则每次使用命令时需增加-c选项指定配置文件。例如配置文件保存为/home/config,使用ls时,命令格式如下:

      ./ossutil64 ls oss://examplebucket -c /home/config
    3. 根据提示设置工具的语言。

      请输入语言CH或EN。工具使用的语言默认与操作系统保持一致。该配置项将在此次config命令设置成功后生效。

2、创建存储空间bucket

  • 命令格式
    ./ossutil64 mb oss://bucket
  • 使用示例

    创建名为examplebucket的存储空间。

    ./ossutil64 mb oss://examplebucket

    以下输出结果表明已成功创建examplebucket。

    0.668238(s) elapsed

有关创建Bucket的更多示例,请参见mb(创建存储空间)

3、上传文件

  • 命令格式
    ./ossutil64 cp local_file oss://bucket
  • 使用示例
    • 上传单个文件examplefile.txt至目标存储空间examplebucket。
      ./ossutil64 cp examplefile.txt oss://examplebucket
    • 上传单个文件examplefile.txt至目标存储空间examplebucket,并将文件重命名为exampleobject.txt。
      ./ossutil64 cp examplefile.txt oss://examplebucket/exampleobject.txt

    以下输出结果表明文件已成功上传至目标Bucket。

    0.720812(s) elapsed

有关上传文件的更多示例,请参见cp(上传文件)

4、下载文件

  • 命令格式
    ./ossutil64 cp cloud_url local_file
  • 使用示例

    将文件examplefile.txt从目标存储空间examplebucket下载至本地localfolder文件夹下。

    ./ossutil64 cp oss://examplebucket/examplefile.txt localfolder/

    将文件examplefile.txt从目标存储空间examplebucket下载至本地localfolder文件夹下,并将文件重命名为exampleobject.txt。

    ./ossutil64 cp oss://examplebucket/examplefile.txt localfolder/exampleobject.txt

    以下输出结果表明文件已成功下载至本地目标文件夹。

    0.720812(s) elapsed

有关下载文件的更多示例,请参见cp(下载文件)

5、分享文件

 生成签名URL

  • 命令格式
    ./ossutil64 sign cloud_url [--timeout <value>]
  • 使用示例

    对目标文件oss://examplebucket/exampleobject.txt生成超时时间为3600秒的文件签名URL。

    ./ossutil64 sign oss://examplebucket/exampleobject.txt --timeout 3600 

    以下输出结果表明已成功生成文件签名URL。

    1. https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampleobject.txt?Expires=1608282224&OSSAccessKeyId=LTAI4G33piUmgRN1DXx9****&Signature=jo4%2FGykfuc1A4fvyvKRpRyymYH****
    2. 0.368676(s) elapsed

三、图形化管理工具ossbrowser

四、JAVASDK

1、示例工程

OSS Java SDK提供了基于Maven和Ant的示例工程。您可以在本地设备上编译和运行示例工程,或者以示例工程为基础开发您的应用。工程的编译和运行方法,请参见工程目录下的README.md。

2、创建存储空间

存储空间是OSS的全局命名空间,相当于数据的容器,可以存储若干文件。

以下代码用于创建存储空间。

  1. public class Demo {
  2. public static void main(String[] args) throws Exception {
  3. // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
  4. String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
  5. // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  6. String accessKeyId = "yourAccessKeyId";
  7. String accessKeySecret = "yourAccessKeySecret";
  8. // 填写Bucket名称,例如examplebucket。
  9. String bucketName = "examplebucket";
  10. // 创建OSSClient实例。
  11. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
  12. try {
  13. // 创建存储空间。
  14. ossClient.createBucket(bucketName);
  15. } catch (OSSException oe) {
  16. System.out.println("Caught an OSSException, which means your request made it to OSS, "
  17. + "but was rejected with an error response for some reason.");
  18. System.out.println("Error Message:" + oe.getErrorMessage());
  19. System.out.println("Error Code:" + oe.getErrorCode());
  20. System.out.println("Request ID:" + oe.getRequestId());
  21. System.out.println("Host ID:" + oe.getHostId());
  22. } catch (ClientException ce) {
  23. System.out.println("Caught an ClientException, which means the client encountered "
  24. + "a serious internal problem while trying to communicate with OSS, "
  25. + "such as not being able to access the network.");
  26. System.out.println("Error Message:" + ce.getMessage());
  27. } finally {
  28. if (ossClient != null) {
  29. ossClient.shutdown();
  30. }
  31. }
  32. }
  33. }

3、上传文件

以下代码用于通过流式上传的方式将文件上传到OSS。

  1. import com.aliyun.oss.ClientException;
  2. import com.aliyun.oss.OSS;
  3. import com.aliyun.oss.OSSClientBuilder;
  4. import com.aliyun.oss.OSSException;
  5. import java.io.ByteArrayInputStream;
  6. public class Demo {
  7. public static void main(String[] args) throws Exception {
  8. // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
  9. String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
  10. // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  11. String accessKeyId = "yourAccessKeyId";
  12. String accessKeySecret = "yourAccessKeySecret";
  13. // 填写Bucket名称,例如examplebucket。
  14. String bucketName = "examplebucket";
  15. // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
  16. String objectName = "exampledir/exampleobject.txt";
  17. // 创建OSSClient实例。
  18. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
  19. try {
  20. String content = "Hello OSS";
  21. ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
  22. } catch (OSSException oe) {
  23. System.out.println("Caught an OSSException, which means your request made it to OSS, "
  24. + "but was rejected with an error response for some reason.");
  25. System.out.println("Error Message:" + oe.getErrorMessage());
  26. System.out.println("Error Code:" + oe.getErrorCode());
  27. System.out.println("Request ID:" + oe.getRequestId());
  28. System.out.println("Host ID:" + oe.getHostId());
  29. } catch (ClientException ce) {
  30. System.out.println("Caught an ClientException, which means the client encountered "
  31. + "a serious internal problem while trying to communicate with OSS, "
  32. + "such as not being able to access the network.");
  33. System.out.println("Error Message:" + ce.getMessage());
  34. } finally {
  35. if (ossClient != null) {
  36. ossClient.shutdown();
  37. }
  38. }
  39. }
  40. }

3、下载文件

以下代码用于通过流式下载方式从OSS下载文件。

  1. import com.aliyun.oss.ClientException;
  2. import com.aliyun.oss.OSS;
  3. import com.aliyun.oss.OSSClientBuilder;
  4. import com.aliyun.oss.OSSException;
  5. import com.aliyun.oss.model.OSSObject;
  6. import java.io.BufferedReader;
  7. import java.io.InputStream;
  8. import java.io.InputStreamReader;
  9. public class Demo {
  10. public static void main(String[] args) throws Exception {
  11. // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
  12. String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
  13. // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  14. String accessKeyId = "yourAccessKeyId";
  15. String accessKeySecret = "yourAccessKeySecret";
  16. // 填写Bucket名称,例如examplebucket。
  17. String bucketName = "examplebucket";
  18. // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
  19. String objectName = "exampledir/exampleobject.txt";
  20. // 创建OSSClient实例。
  21. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
  22. try {
  23. // 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
  24. OSSObject ossObject = ossClient.getObject(bucketName, objectName);
  25. // 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
  26. InputStream content = ossObject.getObjectContent();
  27. if (content != null) {
  28. BufferedReader reader = new BufferedReader(new InputStreamReader(content));
  29. while (true) {
  30. String line = reader.readLine();
  31. if (line == null) break;
  32. System.out.println("\n" + line);
  33. }
  34. // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
  35. content.close();
  36. }
  37. } catch (OSSException oe) {
  38. System.out.println("Caught an OSSException, which means your request made it to OSS, "
  39. + "but was rejected with an error response for some reason.");
  40. System.out.println("Error Message:" + oe.getErrorMessage());
  41. System.out.println("Error Code:" + oe.getErrorCode());
  42. System.out.println("Request ID:" + oe.getRequestId());
  43. System.out.println("Host ID:" + oe.getHostId());
  44. } catch (ClientException ce) {
  45. System.out.println("Caught an ClientException, which means the client encountered "
  46. + "a serious internal problem while trying to communicate with OSS, "
  47. + "such as not being able to access the network.");
  48. System.out.println("Error Message:" + ce.getMessage());
  49. } finally {
  50. if (ossClient != null) {
  51. ossClient.shutdown();
  52. }
  53. }
  54. }
  55. }

3、列举文件

以下代码用于列举examplebucket存储空间下的文件。默认列举100个文件。

  1. import com.aliyun.oss.ClientException;
  2. import com.aliyun.oss.OSS;
  3. import com.aliyun.oss.OSSClientBuilder;
  4. import com.aliyun.oss.OSSException;
  5. import com.aliyun.oss.model.OSSObjectSummary;
  6. import com.aliyun.oss.model.ObjectListing;
  7. public class Demo {
  8. public static void main(String[] args) throws Exception {
  9. // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
  10. String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
  11. // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  12. String accessKeyId = "yourAccessKeyId";
  13. String accessKeySecret = "yourAccessKeySecret";
  14. // 填写Bucket名称,例如examplebucket。
  15. String bucketName = "examplebucket";
  16. // 创建OSSClient实例。
  17. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
  18. try {
  19. // ossClient.listObjects返回ObjectListing实例,包含此次listObject请求的返回结果。
  20. ObjectListing objectListing = ossClient.listObjects(bucketName);
  21. // objectListing.getObjectSummaries获取所有文件的描述信息。
  22. for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
  23. System.out.println(" - " + objectSummary.getKey() + " " +
  24. "(size = " + objectSummary.getSize() + ")");
  25. }
  26. } catch (OSSException oe) {
  27. System.out.println("Caught an OSSException, which means your request made it to OSS, "
  28. + "but was rejected with an error response for some reason.");
  29. System.out.println("Error Message:" + oe.getErrorMessage());
  30. System.out.println("Error Code:" + oe.getErrorCode());
  31. System.out.println("Request ID:" + oe.getRequestId());
  32. System.out.println("Host ID:" + oe.getHostId());
  33. } catch (ClientException ce) {
  34. System.out.println("Caught an ClientException, which means the client encountered "
  35. + "a serious internal problem while trying to communicate with OSS, "
  36. + "such as not being able to access the network.");
  37. System.out.println("Error Message:" + ce.getMessage());
  38. } finally {
  39. if (ossClient != null) {
  40. ossClient.shutdown();
  41. }
  42. }
  43. }
  44. }

五、REST API:略

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/379470
推荐阅读
相关标签
  

闽ICP备14008679号