.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)咨询.

相关文章
相关标签/搜索