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使用。