由于之前的微软帐号注销,导致我Nuget帐号注销,MQiniu的包在nuget已经无法找到,所以重新上传了一个MQiniu.CoreSdk(原先名字无法使用,心塞),对不起各位

一、问题背景

  公司目前正在将一部分的业务从.NET平台准备迁移到.NET Core上去,同时也准备启用docker进行.NET Core的部署,在项目迁移过程中,不可避免的碰到有些SDK只有在.NET Framework下有,而.NET Core没有的情况,而七牛就是碰到的其中一个,之前在nuget上看到qiniu的官方SDK引用进来后,会提醒你该sdk是基于.NET Framework版本,那如果部署在IIS下是没问题的,但是如果部署在linux下,那就跑不起来了,基于此,也为了以后方便其他项目的迁移,就捣鼓了一个.NET Core版本的七牛SDK,基于官方最新7.3的版本。

二、修改说明

  废话不多说,上代码,啊呸先上链接https://github.com/Hello-Mango/MQiniu.Core,这是我已经编译好的代码,并且已经上传NUGET(搜索MQiniu.CoreSdk,不敢用qiniu.core这个名字,觉得最好还是官方可以出一个)

  修改方案其实是非常简单的,官方的sdk源码语法上跟.NET Core其实就是一样的,最终需要修改的是HttpManager.cs文件中将

wReq.ServicePoint.Expect100Continue = false;

  修改为

ServicePointManager.Expect100Continue = false;

  如果不修改的话,会出现报错情况,具体啥报错给忘记了,这个也是我后来查找到的解决方案,如果有朋友有更好的解决方案,也麻烦请告知。

  以下是引用图:

        

  可以看到使用MQiniu.Core时不会提示已使用.NETFrameWork

三、具体使用

  如果大家想自己尝试的话,可以下载官方的SDK源码进行.NET Core的改造,官方sdk源码地址:https://github.com/qiniu/csharp-sdk,或者可以直接Nuget搜索MQiniu.CoreSdk

  具体代码使用方法完全可以参照官方的文档进行,这里就不多说,这边只给出我这边的试验代码

        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 > )
{
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 == )
{
list.Add(new { fileName = _fileName, qiniuName = _qiniuName, uploadTime = DateTime.Now, Remark = res.First(p => p.Key == _fileName).Value[] });
}
else
{
throw new Exception(result.RefText);//上传失败错误信息
}
}
}
return list;
}

四、总结

  目前使用下来,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)咨询.

最新文章

  1. Collection框架
  2. QuickFlow UI 控件之 NamedFormAttachment
  3. Zend框架设置数据库连接编码为utf8三种方法
  4. C#_基础
  5. Mac Aria2 使用Privoxy将socks代理转化为http代理
  6. dlopen、dlsym和dlclose的使用
  7. RAC集群时间同步服务
  8. HTMLPARSER.NET 参考资料
  9. 如何选择版本控制系统 ---为什么选择Git版本控制系统
  10. Windows下如何将一个文件夹通过Git上传到GitHub上(转)
  11. mysql普通用户本机无法登录的解决办法
  12. Windows下安装Redis服务
  13. rest_framework视图和组件
  14. WebRTC学习之 Intel&#174; Collaboration Suite for WebRTC源码流程解读
  15. cece
  16. unity3d 给游戏添加音源 Unity3d adds a sound source to the game
  17. Bootstrap3基础 form-group 输入框之间出现间隔
  18. spring boot 学习资料
  19. Azure SQL Database (22) Azure SQL Database支持中文值
  20. mysql 入门 jdbc

热门文章

  1. js根据出生年月日换算年龄
  2. Web Component总结
  3. ECharts插件的使用
  4. Cookie实现--用户上次访问时间
  5. 织梦首页、列表页调用文章body内容的两种方法
  6. ffmpeg中avframe的YUV格式数据到OpenCV中Mat的BGR格式转换
  7. sqlite效率探测
  8. JAVA BASE64
  9. id,is的用法,小数据池的概念及编码知识进阶
  10. js截取字符串的方法