天天看點

ASP.NET 阿裡雲OSS NET SDK 引用示範程式

1.引入SDK bin檔案,下載下傳位址:https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/internal/oss/0.0.4/assets/sdk/OSS_SDK_DOTNET_2_3_0.zip?spm=5176.doc32085.2.3.dH1Os6&file=OSS_SDK_DOTNET_2_3_0.zip
2.源代碼:

using System;
using System.Collections.Generic;
using Aliyun.OSS;

namespace TaoYe
{
    /// <summary>
    /// 快速入門示例程式   
    /// </summary>
    public static class SimpleSamples
    {
        private const string _accessKeyId = "<your AccessKeyId>";
        private const string _accessKeySecret = "<your AccessKeySecret>";
        private const string _endpoint = "<valid host name>";

        private const string _bucketName = "<your bucket name>";
        private const string _key = "<your key>";
        private const string _fileToUpload = "<your local file path>";

        private static OssClient _client = new OssClient(_endpoint, _accessKeyId, _accessKeySecret);

        public static void Main(string[] args)
        {
            CreateBucket();
            SetBucketAcl();
            GetBucketAcl();

            PutObject();
            ListObjects();
            GetObject();
            DeleteObject();

            // DeleteBucket();

            Console.WriteLine("Press any key to continue . . . ");
            Console.ReadKey(true);
        }

        /// <summary>
        /// 建立一個新的存儲空間
        /// </summary>
        private static void CreateBucket()
        {
            try
            {
                var result = _client.CreateBucket(_bucketName);
                Console.WriteLine("建立存儲空間{0}成功", result.Name);
            }
            catch (Exception ex)
            {
                Console.WriteLine("建立存儲空間失敗. 原因:{0}", ex.Message);
            }
        }

        /// <summary>
        /// 上傳一個新檔案
        /// </summary>
        private static void PutObject()
        {
            try
            {
                _client.PutObject(_bucketName, _key, _fileToUpload);
                Console.WriteLine("上傳檔案成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine("上傳檔案失敗.原因: {0}", ex.Message);
            }
        }

        /// <summary>
        /// 列出存儲空間内的所有檔案
        /// </summary>
        private static void ListObjects()
        {
            try
            {
                var keys = new List<string>();
                ObjectListing result = null;
                string nextMarker = string.Empty;

                /// 由于ListObjects每次最多傳回100個結果,是以,這裡需要循環去擷取,直到傳回結果中IsTruncated為false
                do
                {
                    var listObjectsRequest = new ListObjectsRequest(_bucketName)
                    {
                        Marker = nextMarker,
                        MaxKeys = 100
                    };
                    result = _client.ListObjects(listObjectsRequest);

                    foreach (var summary in result.ObjectSummaries)
                    {
                        keys.Add(summary.Key);
                    }

                    nextMarker = result.NextMarker;
                } while (result.IsTruncated);

                Console.WriteLine("列出存儲空間中的檔案");
                foreach (var key in keys)
                {
                    Console.WriteLine("檔案名稱:{0}", key);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("列出存儲空間中的檔案失敗.原因: {0}", ex.Message);
            }

        }

        /// <summary>
        /// 下載下傳檔案
        /// </summary>
        private static void GetObject()
        {
            try
            {
                var result = _client.GetObject(_bucketName, _key);
                Console.WriteLine("下載下傳的檔案成功,名稱是:{0},長度:{1}", result.Key, result.Metadata.ContentLength);
            }
            catch (Exception ex)
            {
                Console.WriteLine("下載下傳檔案失敗.原因:{0}", ex.Message);
            }
        }

        /// <summary>
        /// 删除檔案
        /// </summary>
        private static void DeleteObject()
        {
            try
            {
                _client.DeleteObject(_bucketName, _key);
                Console.WriteLine("删除檔案成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine("删除檔案失敗.原因: {0}", ex.Message);
            }
        }

        /// <summary>
        /// 擷取存儲空間ACL的值
        /// </summary>
        private static void GetBucketAcl()
        {
            try
            {
                var result = _client.GetBucketAcl(_bucketName);

                foreach (var grant in result.Grants)
                {
                    Console.WriteLine("擷取存儲空間權限成功,目前權限:{0}", grant.Permission.ToString());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("擷取存儲空間權限失敗.原因: {0}", ex.Message);
            }
        }

        /// <summary>
        /// 設定存儲空間ACL的值
        /// </summary>
        private static void SetBucketAcl()
        {
            try
            {
                _client.SetBucketAcl(_bucketName, CannedAccessControlList.PublicRead);
                Console.WriteLine("設定存儲空間權限成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine("設定存儲空間權限失敗. 原因:{0}", ex.Message);
            }
        }

        /// <summary>
        /// 删除存儲空間
        /// </summary>
        private static void DeleteBucket()
        {
            try
            {
                _client.DeleteBucket(_bucketName);
                Console.WriteLine("删除存儲空間成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine("删除存儲空間失敗", ex.Message);
            }
        }
    }
}


關于:

https://help.aliyun.com/document_detail/32085.html?spm=5176.doc32086.6.268.ahRddG (API文檔的原文位址)
      
_accessKeyId 和 _accessKeySecret 是管理控制台裡的key-value(需要注意别暴露在外面)      
_endpoint 是域名,OSS控制台裡能綁定自己的域名,沒有自己的域名也無妨,預設是阿裡雲提供的域名位址      
_bucketName 是OSS裡面的檔案夾名      
_key是需要存儲的檔案名      
_fileToUpload則是檔案路徑


以上,能實作簡單的OSS使用。      

作  者:​​Rise​​