文章出處

一、七牛自定義配置節點

 <configSections>
    <section name ="QiniuConfig" type="Amy.Toolkit.QiniuStorage.SectionHandler"/>
  </configSections>

  <QiniuConfig>
    <add key="AccessKey" value="自己的accesskey"></add>
    <add key="SecretKey" value="自己的secretkey"></add>
    <add key="Bucket" value="空間名稱"></add>
    <add key="Domain" value="七牛域名/自己域名"></add>
  </QiniuConfig>

二、實現自定義配置功能

    public class Config
    {
        /// <summary>
        /// 七牛公鑰
        /// </summary>
        public string AccessKey { get; set; }

        /// <summary>
        /// 七牛密鑰
        /// </summary>
        public string SecretKey { get; set; }

        /// <summary>
        /// 資源空間
        /// </summary>
        public string Bucket { get; set; }

        /// <summary>
        /// 空間域名
        /// </summary>
        public string Domain { get; set; }
    }

    public class SectionHandler : IConfigurationSectionHandler
    {
        public object Create(object parent, object configContext, XmlNode section)
        {
            Config config = new Config();

            //解析配置文件信息,返回對象
            if (section != null)
            {
                foreach (XmlNode item in section.ChildNodes)
                {
                    switch (item.Attributes["key"].InnerText)
                    {
                        case "AccessKey":
                            config.AccessKey = item.Attributes["value"].InnerText;
                            break;
                        case "SecretKey":
                            config.SecretKey = item.Attributes["value"].InnerText;
                            break;
                        case "Bucket":
                            config.Bucket = item.Attributes["value"].InnerText;
                            break;
                        case "Domain":
                            config.Domain = item.Attributes["value"].InnerText;
                            break;
                        default:
                            break;
                    }

                }
            }
            return config;
        }
    }
View Code

三、實現七牛上傳圖片功能

    public class QiniuFactory
    {
        /// <summary>
        /// 上傳圖片
        /// </summary>
        /// <param name="stream">圖片流</param>
        /// <returns>七牛圖片路徑</returns>
        public static string UploadImage(System.IO.Stream stream)
        {
            Config config = (Config)ConfigurationManager.GetSection("QiniuConfig");

            //設置賬號的AK和SK
            Qiniu.Conf.Config.ACCESS_KEY = config.AccessKey;
            Qiniu.Conf.Config.SECRET_KEY = config.SecretKey;

            IOClient target = new IOClient();
            PutExtra extra = new PutExtra();

            //設置上傳的空間
            String bucket = config.Bucket;

            //設置上傳的文件的key值(及文件名稱)
            String key = IDHelper.Id32 + ".jpg";

            //普通上傳,只需要設置上傳的空間名就可以了,第二個參數可以設定token過期時間
            PutPolicy put = new PutPolicy(bucket, 3600);

            //調用Token()方法生成上傳的Token
            string upToken = put.Token();

            //上傳文件的路徑
            //string filePath = @"F:\130326213588cbde762953a234.jpg";

            //調用PutFile()方法上傳
            //PutRet ret = target.PutFile(upToken, key, filePath, extra);
            var ret = target.Put(upToken, key, stream, extra);
            

            return string.IsNullOrEmpty(ret.key) ? string.Empty : string.Format("{0}/{1}", config.Domain, ret.key);
        }

        /// <summary>
        /// 上傳圖片
        /// </summary>
        /// <param name="stream">圖片流</param>
        /// <returns>七牛圖片路徑</returns>
        public static string UploadImage(byte[] bytes)
        {
            Config config = (Config)ConfigurationManager.GetSection("QiniuConfig");

            //設置賬號的AK和SK
            Qiniu.Conf.Config.ACCESS_KEY = config.AccessKey;
            Qiniu.Conf.Config.SECRET_KEY = config.SecretKey;

            IOClient target = new IOClient();
            PutExtra extra = new PutExtra();

            //設置上傳的空間
            String bucket = config.Bucket;

            //設置上傳的文件的key值(及文件名稱)
            String key = IDHelper.Id32 + ".jpg";

            //普通上傳,只需要設置上傳的空間名就可以了,第二個參數可以設定token過期時間
            PutPolicy put = new PutPolicy(bucket, 3600);

            //調用Token()方法生成上傳的Token
            string upToken = put.Token();

            //上傳文件的路徑
            //string filePath = @"F:\130326213588cbde762953a234.jpg";

            //調用PutFile()方法上傳
            //PutRet ret = target.PutFile(upToken, key, filePath, extra);
            var ret = target.Put(upToken, key, new System.IO.MemoryStream(bytes), extra);


            return string.IsNullOrEmpty(ret.key) ? string.Empty : string.Format("{0}/{1}", config.Domain, ret.key);
        }
    }
View Code

四、客戶端調用七牛

    /// <summary>
    /// 七牛上傳文件
    /// </summary>
    public string QiniuUploadFile()
    {
        var url = "七牛圖片訪問路徑";

        var files = Request.Files;

        if (files.Count > 0)
        {
            url = Amy.Toolkit.QiniuStorage.QiniuFactory.UploadImage(files[0].InputStream);
        }

        return url;
    }

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()