使用阿里云存储站点图片
在日常系统或网站开发过程中,通常会有大量的图片,特别是在网站类项目当中,为了加快用户请求图片的速度,可以将图片放在云上,
这里总结了一套上传到阿里云的辅助方法
阿里云官方参考案例:
https://github.com/aliyun/aliyun-oss-csharp-sdk/blob/master/README-CN.md
https://help.aliyun.com/document_detail/31989.html?spm=5176.doc31853.2.2.acKeg7
代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Aliyun.OSS; using System.IO; using System.Threading; using Ace.Core; namespace utils { public class AliyunPictureHelper { private string _endpoint; private string _accessKeyId; private string _accessKeySecret; private string _bucketName; private OssClient _OssClient; static AutoResetEvent _event = new AutoResetEvent(false); public AliyunPictureHelper(string BucketName=null) { _endpoint = "oss-cn-shenzhen.aliyuncs.com"; _accessKeyId = "your key"; _accessKeySecret = "your secret"; _bucketName = BucketName; _OssClient = new OssClient(_endpoint, _accessKeyId, _accessKeySecret); } #region 图片上传、下载、删除、列表 /// <summary> /// 图片上传 /// </summary> /// <param name="key">秘钥</param> /// <param name="filePathToUpload">文件上传路径</param> /// <returns></returns> public string UploadPic(string bucketName, string key, Stream filePathToUpload) { try { PutObjectResult ret = _OssClient.PutObject(bucketName,key,filePathToUpload); if (ret.ETag.Length > 0) { //eg: string imgUrl = "http://" + BucketName + ".oss-cn-shenzhen.aliyuncs.com/" + key; return "http://" + bucketName + "." + _endpoint + "/" + key; } return null; } catch (Exception ex) { LoggerManage.AddLog("UploadPictureHelper/UploadPic", "OSS",ex.Message, null, IPHelper.GetClientIP()); return null; } } public string UploadPic(string key, MemoryStream filePathToUpload) { return this.UploadPic(_bucketName, key, filePathToUpload); } /// <summary> /// 图片下载 /// </summary> /// <param name="bucketName"></param> /// <param name="key"></param> /// <returns></returns> public PictureModel DownloadPic(string bucketName, string key) { try { var ret = _OssClient.GetObject(bucketName, key); PictureModel pic = new PictureModel() { Key = ret.Key, BucketName = ret.BucketName, Content = ret.Content, Metadata = ret.Metadata }; return pic; } catch (Exception ex) { LoggerManage.AddLog("UploadPictureHelper/DownloadPic", "OSS", ex.Message, null, IPHelper.GetClientIP()); return null; } } public PictureModel DownloadPic(string key) { return DownloadPic(_bucketName, key); } /// <summary> /// 删除图片 /// </summary> /// <param name="bucketName"></param> /// <param name="key"></param> /// <returns></returns> public bool DeletePic(string bucketName, string key) { try { _OssClient.DeleteObject(bucketName, key); return true; } catch (Exception ex) { LoggerManage.AddLog("UploadPictureHelper/DeletePic", "", ex.Message, null, IPHelper.GetClientIP()); return false; } } public bool DeletePic(string key) { return DeletePic(_bucketName, key); } /// <summary> /// 获取文件列表 /// </summary> /// <param name="bucketName"></param> /// <returns></returns> public List<string> GetPicList(string bucketName) { List<string> list = new List<string>(); try { var listResult = _OssClient.ListObjects(bucketName); foreach (var summary in listResult.ObjectSummaries) { list.Add(summary.Key); } } catch (Exception ex) { LoggerManage.AddLog("UploadPictureHelper/GetPicList", "", ex.Message,null, IPHelper.GetClientIP()); return null; } return list; } public List<string> GetPicList() { return GetPicList(_bucketName); } #endregion #region 对存储空间进行操作 /// <summary> /// 获取存储空间列表 /// </summary> /// <returns></returns> public List<Bucket> GetBucketList() { try { List<Bucket> listBucket = new List<Bucket>(); listBucket = _OssClient.ListBuckets().ToList(); return listBucket; } catch (Exception ex) { LoggerManage.AddLog("UploadPictureHelper/GetBucketList", "OSS",ex.Message, null, IPHelper.GetClientIP()); return null; } } /// <summary> /// 创建云存储空间 /// </summary> /// <param name="bucketName"></param> /// <returns></returns> public bool CreateBucket(string bucketName) { try { Bucket bucket = _OssClient.CreateBucket(bucketName); return bucket != null ? true : false; } catch (Exception ex) { LoggerManage.AddLog("UploadPictureHelper/CreateBucket", "OSS",ex.Message, null, IPHelper.GetClientIP()); return false; } } /// <summary> /// 删除云存储空间 /// </summary> /// <param name="bucketName"></param> /// <returns></returns> public bool DeleteBucket(string bucketName) { try { _OssClient.DeleteBucket(bucketName); return true; } catch (Exception ex) { LoggerManage.AddLog("UploadPictureHelper/DeleteBucket", "OSS",ex.Message, null, IPHelper.GetClientIP()); return false; } } #endregion } public class PictureModel { /// <summary> /// 图片key /// </summary> public string Key { get; set; } /// <summary> /// 存储空间名称 /// </summary> public string BucketName { get; set; } public ObjectMetadata Metadata { get; set; } /// <summary> /// 文件流 /// </summary> public Stream Content { get; set; } } }

浙公网安备 33010602011771号