使用阿里云存储站点图片

在日常系统或网站开发过程中,通常会有大量的图片,特别是在网站类项目当中,为了加快用户请求图片的速度,可以将图片放在云上,

这里总结了一套上传到阿里云的辅助方法

阿里云官方参考案例:

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; }
    }
}

 

posted @ 2017-08-08 17:27  微笑代表淡定.Net  阅读(134)  评论(0)    收藏  举报