一、问题背景

  公司目前正在将一部分的业务从.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.Core,不敢用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.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;}

四、总结

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

转载于:https://www.cnblogs.com/OMango/p/8447480.html

.NET Core版本七牛云SDK使用相关推荐

  1. ThinkPHP5.0+七牛云SDK文件上传

    一.问:为什么建议大家使用对象存储 对象存储可以简单理解为用来存储图片.音频.视频等非结构化数据的数据池.相对于主机服务器,具有读写速度快,利于分享的特点.我为什么建议大家使用对象存储?我总结了这六点 ...

  2. 七牛云 php sdk 安装,linux下Composer安装,通过Composer安装七牛云SDK

    先给linux云主机安装Composer,我装的是中国全量镜像,全局安装php -r "readfile('https://getcomposer.org/installer');" ...

  3. 七牛云 直播 java_七牛云直播SDK之推流解析

    最近由于项目需要,研究了直播的推拉流以及滤镜叠加的效果,在此记录一下一些小的细节. 前期做了直播SDK的调研,发现七牛云的SDK更符合项目需求一点,所以,最终选择了七牛云的SDK. 推流 七牛云官方的 ...

  4. android七牛直播镜像,七牛云直播SDK之推流解析

    最近由于项目需要,研究了直播的推拉流以及滤镜叠加的效果,在此记录一下一些小的细节. 前期做了直播SDK的调研,发现七牛云的SDK更符合项目需求一点,所以,最终选择了七牛云的SDK. 推流 七牛云官方的 ...

  5. 微服务电商实战(十一)搭建vue项目对接注册登陆接口,解决跨域问题,使用七牛云实现头像上传

    一.简介 node.js版本:v12.16.3 node.js下载 vue官网教程 iview介绍 上传头像接口,图片存储在七牛云中,注册并实名认证之后可以免费使用 以下会描述使用vue搭建项目框架的 ...

  6. 仿照七牛云图片处理类实现的C#帮助类

    介绍 Sop.Common.Img 请看 七牛云的图片处理功能介绍文档了解本项目功能 此项目是有https://github.com/Sopcce/.Net-Common-Utility中的一个小部分 ...

  7. markown编辑器截图粘贴预览,并将图片传至七牛云

    最近在做一个项目,需要实现类似QQ截图后,就是能够在富文本编辑器中粘贴截图并预览. 先看一下效果: 分析一下实现步骤: QQ截图后在编辑器中粘贴,肯定会有一个粘贴事件,即 paste 事件 在事件回调 ...

  8. vue-webpack.config使用七牛云cdn镜像加速

    1. 配置cdn地址 在config目录下创建 app.config.js module.exports = {//配置cdncdn:{host:'http://xxxxx.clouddn.com/' ...

  9. 微信小程序使用七牛云对象存储保存图片和文件

    先给大家看效果图,如下: 一.开通七牛云对象存储服务(免费的) 官网:https://www.qiniu.com/,实名认证后,创建一个空间,用于保存文件 二.获取 AccessKey和SecretK ...

最新文章

  1. 0902 - Preferences Permission
  2. SpendidCRM:在admin-layout中修改了视图上的字段后,用MyGeneration生成修改脚本
  3. IE8的parseInt
  4. java升级为jdk1.8_jdk1.7升级为1.8
  5. win7更新powershell到5.1
  6. 通过WiFi调试android手机
  7. 在SAP C4C创建销售订单时如何绑定创建者的微信open id
  8. Mybatis Generator 配置详解
  9. PULSE:一种基于隐式空间的图像超分辨率算法
  10. Xenapp之web界面中文化及发布应用
  11. android中自定义 toast,android 自定义Toast样式和显示方式
  12. Linux性能及调优指南(翻译)
  13. Spring的junit4测试集成
  14. 9-21 调试javaweb 数据库连接感想
  15. 新西兰梅西大学有计算机专业吗,新西兰大学计算机排名第一之梅西大学计算机专业...
  16. 工作为什么找不到,简历为什么总会石沉大海
  17. 博客项目实现文章评论功能
  18. 计算机word打开,电脑word打不开怎么办
  19. 游戏脚本在移动游戏设计中的作用_游戏可以在教育中起到哪些正面的作用?
  20. SN74LS00N芯片逻辑输出电平

热门文章

  1. updateStateByKey--word count
  2. RH033 Unit 13 Finding and Processing Files
  3. 软件开发项目云端All
  4. Forrtl: severe(157): Program Exception - access violation
  5. 第二章:深入C#数据类型
  6. 编译linux内核步骤
  7. WebMatrix 3发布了!
  8. F5提高Microsoft SharePoint 2010平台的灵捷 度、性能和安全性
  9. 安卓AS_git 进行更新远程分支
  10. COM中的IDL语言的难点之接口指针