1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C# 阿里云对象存储OSS创建 删除 上传代码实现

C# 阿里云对象存储OSS创建 删除 上传代码实现

时间:2022-01-26 09:33:35

相关推荐

C# 阿里云对象存储OSS创建 删除 上传代码实现

一、开始接入

1、Nuget安装Aliyun.OSS.SDK;

2、代码实现:

/// <summary>/// 阿里云对象存储服务/// </summary>public class AliyunOss{const string accessKeyId = "";const string accessKeySecret = "";const string endpoint = "https://oss-cn-";public const string cdn = "http://test.oss-cn-/";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方法的URLvar 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方法的URLvar 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。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。