• 阿里云OSS存储开发(一)


    Step 1. 初始化一个OSSClient

    OSSClient是与OSS服务交互的客户端,SDK的OSS操作都是通过OSSClient完成的。

    下面代码新建了一个OSSClient:

    using Aliyun.OpenServices.OpenStorageService;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace AliyunTest
    {
        class Program
        {
            static readonly string accessKeyId = "AccessKeyId";
            static readonly string accessKeySecret = "AccessKeySecret";
            //关于这个endPoint,可以参考:http://bbs.aliyun.com/read/149100.html?spm=5176.7189909.0.0.YiwiFw
            static readonly string endPoint = "http://oss-cn-beijing.aliyuncs.com";
    
            static void Main(string[] args)
            {
                //初始化 OSSClient
                OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
    
                //使用代码...
            }
        }
    }

    在上面代码中,变量 accessKeyIdaccessKeySecret 是由系统分配给用户的,称为ID对,用于标识用户,为访问OSS做签名验证。

    Step 2. 新建Bucket

    Bucket是OSS上的命名空间,相当于数据的容器,可以存储若干数据实体(Object)。

    你可以按照下面的代码新建一个Bucket:

            /// <summary>
            /// 新建存储对象容器Bucket
            /// </summary>
            /// <param name="bucketName">容器名称</param>
            void CreateBucket(string bucketName)
            {
                //初始化 OSSClient
                OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
    
                // 新建一个Bucket
                var bucket = ossClient.CreateBucket(bucketName);
    
                Console.WriteLine(bucket.CreationDate);
            }

    由于Bucket的名字是全局唯一的,所以尽量保证你的 bucketName 不与别人重复。

    其实也可以在阿里云的OSS管理控制台创建。

    Step 3. 上传Object

    Object是OSS中最基本的数据单元,你可以把它简单地理解为文件,用下面代码可以实现一个Object的上传:

            /// <summary>
            /// 进行对象存储
            /// </summary>
            /// <param name="bucketName">bucket名称</param>
            void PutObject(string bucketName)
            {
                //初始化 OSSClient
                OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
    
                //定义文件流
                var objStream = new System.IO.FileStream("D:\example\test.jpg", System.IO.FileMode.OpenOrCreate);
                //定义 object 描述
                var objMetadata = new ObjectMetadata();
                var objKey = "test.jpg";
    
                //执行 put 请求,并且返回对象的MD5摘要。
                var putResult = ossClient.PutObject(bucketName, objKey, objStream, objMetadata);
    
                Console.WriteLine(putResult.ETag);
            }

    Object通过InputStream的形式上传到OSS中。在上面的例子里我们可以看出,每上传一个Object,都需要指定和Object关 联的ObjectMetadata。ObjectMetaData是用户对该object的描述,由一系列name-value对组成;其中 ContentLength是必须设置的,以便SDK可以正确识别上传Object的大小。

    Put Object请求处理成功后,OSS会将收到文件的MD5值放在返回结果的ETag中。用户可以根据ETag检验上传的文件与本地的是否一致。

    Step 4. 获取指定Objec

            /// <summary>
            /// 获取一个存储对象
            /// </summary>
            /// <param name="bucketName">bucket名称</param>
            /// <param name="objKey">对象标识名称</param>
            void GetObject(string bucketName, string objKey)
            {
                //初始化 OSSClient
                OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
    
                //获取对象
                var obj = ossClient.GetObject(bucketName, objKey);
                //获取Object的输入流
                var objStream = obj.Content;
    
                //怎么处理数据流,您看着办吧。
                //...
    
                //最后关闭数据流。
                objStream.Close();
            }

    最终文件怎么访问呢?你猜(上阿里云的管理控制台看看你就知道了)...

  • 相关阅读:
    Appium Android 元素定位方法 原生+H5
    Eclipse下Python的MySQLdb的安装以及相关问题
    Python模块包中__init__.py文件的作用
    如何调用另一个python文件中的代码
    Python单元测试框架unittest使用方法讲解
    python利用unittest进行测试用例执行的几种方式
    python随机生成手机号码
    eclipse 安装python后pydev不出现
    Appium 如何模拟返回按键
    python分布式进程
  • 原文地址:https://www.cnblogs.com/easeyeah/p/4109584.html
Copyright © 2020-2023  润新知