一、開始接入
1、Nuget安裝Aliyun.OSS.SDK;
2、代碼實現:
/// <summary>
/// 阿里雲對象存儲服務
/// </summary>
public class AliyunOss
{
const string accessKeyId = "";
const string accessKeySecret = "";
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
public const string cdn = "http://test.oss-cn-hangzhou.aliyuncs.com/";
public static string bucketName = "test";
/// <summary>
/// oss客戶端對象
/// </summary>
private OssClient ossClient;
/// <summary>
/// 配置
/// </summary>
public ClientConfiguration ossConfig;
/// <summary>
/// 構造函數
/// </summary>
public AliyunOss()
{
//默認配置
ossConfig = new ClientConfiguration();
//
ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret, ossConfig);
}
#region 存儲空間相關操作
/// <summary>
/// 獲取賬戶下所有存儲空間名稱
/// </summary>
/// <returns></returns>
public List<string> GetAllBucket()
{
try
{
var buckets = ossClient.ListBuckets();
if (buckets != null && buckets.Count() > 0)
{
return buckets.Select(e => e.Name).ToList();
}
else
{
return new List<string>();
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 在OSS中創建一個新的存儲空間。
/// </summary>
/// <param name="bucketName">要創建的存儲空間的名稱</param>
public void CreateBucket(string bucketName)
{
try
{
//BucketName具有全局唯一性。
var exist = ossClient.DoesBucketExist(bucketName);
if (!exist)
{
ossClient.CreateBucket(bucketName);
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 刪除存儲空間
/// </summary>
/// <param name="bucketName"></param>
public void DeleteBucket(string bucketName)
{
try
{
ossClient.DeleteBucket(bucketName);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 文件相關操作
/// <summary>
/// 上傳本地的文件到指定的OSS的存儲空間
/// </summary>
/// <param name="bucketName">指定的存儲空間名稱</param>
/// <param name="key">文件的在OSS上保存的名稱</param>
/// <param name="fileToUpload">指定上傳文件的本地完整路徑</param>
public string PutObject(string bucketName, string key, string fileToUpload)
{
try
{
var result = ossClient.PutObject(bucketName, key, fileToUpload);
return result.ETag;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 上傳文件到指定的OSS的存儲空間
/// </summary>
/// <param name="bucketName">指定的存儲空間名稱</param>
/// <param name="key">文件的在OSS上保存的名稱</param>
/// <param name="binaryData">文件字節流</param>
/// <returns></returns>
public string PutObject(string bucketName, string key, byte[] binaryData)
{
try
{
MemoryStream requestContent = new MemoryStream(binaryData);
var result = ossClient.PutObject(bucketName, key, requestContent);
return result.ETag;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 下載文件流
/// </summary>
/// <param name="bucketName">指定的存儲空間名稱</param>
/// <param name="key">文件的在OSS上保存的名稱</param>
public byte[] DownLoadObject(string bucketName, string key)
{
try
{
var obj = ossClient.GetObject(bucketName, key);
if (obj != null)
{
using (var requestStream = obj.Content)
{
byte[] bytes = new byte[requestStream.Length];
requestStream.Read(bytes, 0, bytes.Length);
requestStream.Seek(0, SeekOrigin.Begin);
return bytes;
}
}
return null;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 刪除指定的文件
/// </summary>
/// <param name="bucketName">文件所在存儲空間的名稱</param>
/// <param name="key">待刪除的文件名稱</param>
public void DeleteObject(string bucketName, string key)
{
try
{
ossClient.DeleteObject(bucketName, key);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 複製文件
/// </summary>
/// <param name="sourceBucket">源Bucket</param>
/// <param name="sourceObject">源key</param>
/// <param name="targetBucket">目標Bucket</param>
/// <param name="targetObject">目標Key</param>
public void CopyObject(string sourceBucket, string sourceObject, string targetBucket, string targetObject)
{
try
{
var metadata = new ObjectMetadata();
metadata.AddHeader("mk1", "mv1");
metadata.AddHeader("mk2", "mv2");
var req = new CopyObjectRequest(sourceBucket, sourceObject, targetBucket, targetObject)
{
NewObjectMetadata = metadata
};
// 拷貝文件。
ossClient.CopyObject(req);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// URL簽名授權訪問(上傳)
/// </summary>
/// <param name="bucketName"></param>
/// <param name="key"></param>
/// <returns></returns>
public string[] GetUploadFileOssUrl(string bucketName, string key)
{
// 生成PUT方法的URL
var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Put)
{
Expiration = DateTime.Now.AddMinutes(30),
ContentType = "image/*"
};
var uri = ossClient.GeneratePresignedUri(req);
string AbsolutePath = cdn + uri.AbsolutePath;
string AbsoluteUri = uri.AbsoluteUri;
return new string[] { AbsolutePath, AbsoluteUri };
}
/// <summary>
/// URL簽名授權訪問(刪除)
/// </summary>
/// <param name="bucketName"></param>
/// <param name="key"></param>
/// <returns></returns>
public string GetDeleteFileOssUrl(string bucketName, string key)
{
// 生成PUT方法的URL
var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Delete)
{
Expiration = DateTime.Now.AddMinutes(15),
ContentType = "image/*"
};
var uri = ossClient.GeneratePresignedUri(req);
return uri.AbsolutePath;
}
#endregion
}
本文屬於個人原創作品、個人總結,謝絕轉載、抄襲。如果您有疑問或者希望溝通交流,可以聯繫QQ:865562060。