阿里云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();
        }

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

原文地址:https://www.cnblogs.com/easeyeah/p/4109584.html