.NET Core版本七牛云SDK使用
一、问题背景
公司目前正在将一部分的业务从.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使用相关推荐
- ThinkPHP5.0+七牛云SDK文件上传
一.问:为什么建议大家使用对象存储 对象存储可以简单理解为用来存储图片.音频.视频等非结构化数据的数据池.相对于主机服务器,具有读写速度快,利于分享的特点.我为什么建议大家使用对象存储?我总结了这六点 ...
- 七牛云 php sdk 安装,linux下Composer安装,通过Composer安装七牛云SDK
先给linux云主机安装Composer,我装的是中国全量镜像,全局安装php -r "readfile('https://getcomposer.org/installer');" ...
- 七牛云 直播 java_七牛云直播SDK之推流解析
最近由于项目需要,研究了直播的推拉流以及滤镜叠加的效果,在此记录一下一些小的细节. 前期做了直播SDK的调研,发现七牛云的SDK更符合项目需求一点,所以,最终选择了七牛云的SDK. 推流 七牛云官方的 ...
- android七牛直播镜像,七牛云直播SDK之推流解析
最近由于项目需要,研究了直播的推拉流以及滤镜叠加的效果,在此记录一下一些小的细节. 前期做了直播SDK的调研,发现七牛云的SDK更符合项目需求一点,所以,最终选择了七牛云的SDK. 推流 七牛云官方的 ...
- 微服务电商实战(十一)搭建vue项目对接注册登陆接口,解决跨域问题,使用七牛云实现头像上传
一.简介 node.js版本:v12.16.3 node.js下载 vue官网教程 iview介绍 上传头像接口,图片存储在七牛云中,注册并实名认证之后可以免费使用 以下会描述使用vue搭建项目框架的 ...
- 仿照七牛云图片处理类实现的C#帮助类
介绍 Sop.Common.Img 请看 七牛云的图片处理功能介绍文档了解本项目功能 此项目是有https://github.com/Sopcce/.Net-Common-Utility中的一个小部分 ...
- markown编辑器截图粘贴预览,并将图片传至七牛云
最近在做一个项目,需要实现类似QQ截图后,就是能够在富文本编辑器中粘贴截图并预览. 先看一下效果: 分析一下实现步骤: QQ截图后在编辑器中粘贴,肯定会有一个粘贴事件,即 paste 事件 在事件回调 ...
- vue-webpack.config使用七牛云cdn镜像加速
1. 配置cdn地址 在config目录下创建 app.config.js module.exports = {//配置cdncdn:{host:'http://xxxxx.clouddn.com/' ...
- 微信小程序使用七牛云对象存储保存图片和文件
先给大家看效果图,如下: 一.开通七牛云对象存储服务(免费的) 官网:https://www.qiniu.com/,实名认证后,创建一个空间,用于保存文件 二.获取 AccessKey和SecretK ...
最新文章
- 0902 - Preferences Permission
- SpendidCRM:在admin-layout中修改了视图上的字段后,用MyGeneration生成修改脚本
- IE8的parseInt
- java升级为jdk1.8_jdk1.7升级为1.8
- win7更新powershell到5.1
- 通过WiFi调试android手机
- 在SAP C4C创建销售订单时如何绑定创建者的微信open id
- Mybatis Generator 配置详解
- PULSE:一种基于隐式空间的图像超分辨率算法
- Xenapp之web界面中文化及发布应用
- android中自定义 toast,android 自定义Toast样式和显示方式
- Linux性能及调优指南(翻译)
- Spring的junit4测试集成
- 9-21 调试javaweb 数据库连接感想
- 新西兰梅西大学有计算机专业吗,新西兰大学计算机排名第一之梅西大学计算机专业...
- 工作为什么找不到,简历为什么总会石沉大海
- 博客项目实现文章评论功能
- 计算机word打开,电脑word打不开怎么办
- 游戏脚本在移动游戏设计中的作用_游戏可以在教育中起到哪些正面的作用?
- SN74LS00N芯片逻辑输出电平
热门文章
- updateStateByKey--word count
- RH033 Unit 13 Finding and Processing Files
- 软件开发项目云端All
- Forrtl: severe(157): Program Exception - access violation
- 第二章:深入C#数据类型
- 编译linux内核步骤
- WebMatrix 3发布了!
- F5提高Microsoft SharePoint 2010平台的灵捷 度、性能和安全性
- 安卓AS_git 进行更新远程分支
- COM中的IDL语言的难点之接口指针