.NET Core版本七牛雲SDK使用

1、問題背景html

  公司目前正在將一部分的業務從.NET平臺準備遷移到.NET Core上去,同時也準備啓用docker進行.NET Core的部署,在項目遷移過程當中,不可避免的碰到有些SDK只有在.NET Framework下有,而.NET Core沒有的狀況,而七牛就是碰到的其中一個,以前在nuget上看到qiniu的官方SDK引用進來後,會提醒你該sdk是基於.NET Framework版本,那若是部署在IIS下是沒問題的,可是若是部署在linux下,那就跑不起來了,基於此,也爲了之後方便其餘項目的遷移,就搗鼓了一個.NET Core版本的七牛SDK,基於官方最新7.3的版本。linux

2、修改說明git

  廢話很少說,上代碼,啊呸先上連接https://github.com/Hello-Mango/MQiniu.Core,這是我已經編譯好的代碼,而且已經上傳NUGET(搜索MQiniu.Core,不敢用qiniu.core這個名字,以爲最好仍是官方能夠出一個)github

  修改方案實際上是很是簡單的,官方的sdk源碼語法上跟.NET Core其實就是同樣的,最終須要修改的是HttpManager.cs文件中將docker

wReq.ServicePoint.Expect100Continue = false;

  修改成app

ServicePointManager.Expect100Continue = false;

  若是不修改的話,會出現報錯狀況,具體啥報錯給忘記了,這個也是我後來查找到的解決方案,若是有朋友有更好的解決方案,也麻煩請告知。微服務

  如下是引用圖:測試

        

  能夠看到使用MQiniu.Core時不會提示已使用.NETFrameWorkspa

 

3、具體使用.net

  若是你們想本身嘗試的話,能夠下載官方的SDK源碼進行.NET Core的改造,官方sdk源碼地址:https://github.com/qiniu/csharp-sdk,或者能夠直接Nuget搜索MQiniu.Core

  具體代碼使用方法徹底能夠參照官方的文檔進行,這裏就很少說,這邊只給出我這邊的試驗代碼

        public List<Object> UploadQiniu()
        {
            Mac mac = new Mac(appSettings.qiniuupload.qiniuyunAK, appSettings.qiniuupload.qiniuyunSK);/AK SK使用
            PutPolicy putPolicy = new PutPolicy();
            putPolicy.Scope = appSettings.qiniuupload.qiniuyunBucket;
            string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());//token生成
            IFormFileCollection files = Request.Form.Files;
            Config config = new Config()
            {
                Zone = Zone.ZONE_CN_East,
                UseHttps = true
            };
            var res = Request.Form.ToArray();

            FormUploader upload = new FormUploader(config);
            HttpResult result = new HttpResult();
            List<Object> list = new List<Object>();
            foreach (IFormFile file in files)//獲取多個文件列表集合
            {
                if (file.Length > 0)
                {
                    var _fileName = ContentDispositionHeaderValue
                                    .Parse(file.ContentDisposition)
                                    .FileName
                                    .Trim('"');
                    var _qiniuName = appSettings.qiniuupload.prefixPath + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + _fileName;//重命名文件加上時間戳
                    Stream stream = file.OpenReadStream();
                    result = upload.UploadStream(stream, _qiniuName, token, null);
                    if (result.Code == 200)
                    {
                        list.Add(new { fileName = _fileName, qiniuName = _qiniuName, uploadTime = DateTime.Now, Remark = res.First(p => p.Key == _fileName).Value[0] });
                    }
                    else
                    {
                        throw new Exception(result.RefText);//上傳失敗錯誤信息
                    }
                }
            }
            return list;
        }

4、總結

  目前使用下來,qiniu是個很是好的CDN以及對象存儲平臺,開發測試中的無償使用量也基本都是夠夠的,可是以爲像.NET Core這種的SDK包最好仍是由官方提供,而後後面也許會繼續探索性的嘗試七牛的容器平臺。

  因爲這個只是我我的的修改做品,未通過大量的驗證,若是你們發現有什麼問題的話,也請聯繫我。

  感謝@無語1994的指點,官方.net core版本是Qiniu.Shared,不過維護日期貌似比較早,版本是7.2.15版本的SDK

做者: Mango

出處: http://www.cnblogs.com/OMango/

關於本身:專一.Net桌面開發以及Web後臺開發,開始接觸微服務、docker等互聯網相關

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出, 原文連接 若有問題, 可郵件(hongjb@yizit.com)諮詢.

相關文章
相關標籤/搜索