由于之前的微软帐号注销,导致我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)咨询.

.NET Core版本七牛云SDK使用的更多相关文章

  1. thinkphp5.1调用七牛云SDK上传文件

    thinkphp5.0 class Upload { public static function image(){ if(empty($_FILES['file']['tmp_name'])){ e ...

  2. AlarmManager的使用和七牛云android SDK上传图片

    一学期的课程设计又开始了,虽然以后不搞安卓,但是课设还是想好好完成的,因为之前做过地图开发,所以选了一个跟 这个相关的题目,其实有一个校车系统也可以选,但是之前做过一个相似度接近80%的东西,不想混混 ...

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

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

  4. RN 上传文件到以及上传文件到七牛云(初步)

    本文将介绍: 如何使用原生 Javascript 上传文件 如何使用七牛云 SDK 上传文件到七牛云 在 App 中文件上传是一个非常重要的需求,但是翻遍 React Naitve 的官方文档没有发现 ...

  5. 【NET开发】图片处理类-仿照七牛云图片处理功能

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

  6. 七牛云覆盖上传 php

    使用七牛云过程中遇到了需要上传覆盖的情况,最终解决,分享给大家. 七牛云sdk上传示例中是这样写的 <?php require_once 'path_to_sdk/vendor/autoload ...

  7. Laravel 简单使用七牛云服务

    前言 路漫漫其修远兮,吾将上下而求索.学习 Laravel 之初觉得所有东西都很厉害的样子,现在看来就是很厉害啊!最近在写一个项目上传的模块,要上传图片到七牛云,昨天看了一下午七牛云官方的文档感觉还是 ...

  8. 上传base64图片到七牛云前端遇到的坑

    介意前端普通引入七牛云SDk上传图片到七牛云需要多个js,所以才有了base64的上传方式,简化操作,(懒.) 七牛云官方文档如下 https://developer.qiniu.com/kodo/k ...

  9. Electron+React+七牛云 实战跨平台桌面应用(最新更新)

    课程资料获取链接:点击这里 前市场上对 Electron 的呼声很高,它几乎是 Web 开发人员开发桌面客户端的唯一途径,很多大厂都使用 Electron 开发自己的原生应用.Electron 天生适 ...

随机推荐

  1. init和plus(编码中遇到问题就看这里)

    转自:http://ask.dcloud.net.cn/article/165 编码中遇到问题就看这里: http://uikoo9.com/book/chapterDetail/4 plus初始化原 ...

  2. mysql 手册关于修改列字符编码的一个bug

    项目因为历史原因使用了 GBK编码,遇到非GBK编码字符时出现乱码问题,情况比较严重,暂时先打算修改 列的字符编码为 utf8mb4. 查看 mysql 手册: 用 GBK 编码转 utf8 进行说明 ...

  3. Redis Cluster集群搭建与应用

    1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...

  4. Flume介绍

    Flume介绍 http://flume.apache.org/FlumeUserGuide.html 一.Flume架构图 含义 Source 规定收集数据的来源 Channel 相当于一个管道,连 ...

  5. Linux入门——用户组管理

    Linux用户组的管理 简介 用户组用来控制操作权限,防止无关人员莫名 rm -rf 重要文件,导致文件无法恢复或者花费很大代价恢复,这不是一个系统管理员 想看到的结果,所以一般系统管理员都会给开发人 ...

  6. Intellij-工程目录下隐藏不想显示的文件和文件夹

    File-->Editor-->File Types

  7. SVN使用基础

    1.安装svn centos:yum install subversion -y ubuntu:apt-get install subversion -y 2.创建库目录 mkdir /opt/.sv ...

  8. git 文件状态与工作区域

    在上一篇简单讲述了文件状态与工作区域,在这里结合相关git命令详细了解文件的状态变更. 目录 1. 介绍 2. 常用命令 3. 实际操作 1. 介绍 git的文件状态是其git核心内容,了解后对后续的 ...

  9. linux_网站计量单位

    IP 独立IP数,是不同IP地址的计算机访问网站时被计算的总次数,独立IP数是衡量网站流量的一个重要指标,一般一天内相同IP地址的客户端访问网页只被计算为一次,记录独立IP的时间为一天或一个月,目前通 ...

  10. python_如何快速安装第三方库?

    如何快速安装第三方库? 通过python 豆瓣园源https://pypi.douban.com/simple/进行安装,利用国内网速 如何安装? pip -i install https://pyp ...