.NET Core----七牛云图片上传
在引用官方的qiniu.core的nuget是总是发生错误,错误如下,所以就在网上找到了一种解决方案,并稍微改进了一番,
以下是引用图:
方法一:
第一步:引用nuge
第二步:新建项目新建控制器视图、添加配置信息类和读取配置信息
配置信息类:
public class QnySetting
{
public string qiniuyunAK { get; set; }
public string qiniuyunSK { get; set; }
public string qiniuyunBucket { get; set; }
public string prefixPath { get; set; }
}
配置信息:
"Qny": {
"qiniuyunAK": "*",//ak
"qiniuyunSK": "*",//sk
"qiniuyunBucket": "**",//存储空间名称
"prefixPath": "http://upload.qiniup.com"//七牛云地址
}
读取配置信息(在startup文件中的ConfigureServices添加):
services.Configure<QnySetting>(this.Configuration.GetSection("Qny"));
第三步:复制控制器及视图代码
视图代码:
<form method="post" action="/Upload/UploadQiniu" enctype="multipart/form-data">
<input name="file" type="file" />
<input type="submit" value="提交" />
</form>
控制器代码:
private readonly QnySetting _Qny;
public UploadController(IOptions<QnySetting> Qny)
{
_Qny = Qny.Value;
} public IActionResult Index()
{
return View();
} [HttpPost]
public List<Object> UploadQiniu()
{
Mac mac = new Mac(_Qny.qiniuyunAK, _Qny.qiniuyunSK);// AK SK使用
PutPolicy putPolicy = new PutPolicy();
putPolicy.Scope = _Qny.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 = _Qny.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});
}
else
{
throw new Exception(result.RefText);//上传失败错误信息
}
}
}
return list;
}
第四步:然后运行上传图片,结果如图所示
上文方法来自:https://www.cnblogs.com/OMango/p/8447480.html 其中优化了一下
方法二:
引用官方的Qiniu.Shared nuget包
public IActionResult UploadImgToQiNiu()
{
IFormFileCollection files = Request.Form.Files;
Mac mac = new Mac("你的ak", "你的sk");//这里的ak sk 也可以像上面一样通过配置实现
// 上传策略,参见
// https://developer.qiniu.com/kodo/manual/put-policy
PutPolicy putPolicy = new PutPolicy();
// 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
// putPolicy.Scope = bucket + ":" + saveKey;
putPolicy.Scope = "上传储存的空间名称";//可以像上文一样配置
// 上传策略有效期(对应于生成的凭证的有效期)
putPolicy.SetExpires();
// 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
// putPolicy.DeleteAfterDays = 1;
string jstr = putPolicy.ToJsonString();
//获取上传凭证
var uploadToken = Auth.CreateUploadToken(mac, jstr); //false 使用https 自动识别存储空间
Qiniu.Common.Config.AutoZone(_qiniu.qiniuyunAK, _qiniu.qiniuyunBucket, false);
UploadManager um = new UploadManager();
foreach (IFormFile file in files)//获取多个文件列表集合
{
if (file.Length > )
{
Stream stream = file.OpenReadStream();
var fileName = ContentDispositionHeaderValue
.Parse(file.ContentDisposition)
.FileName
.Trim('"');
var saveKey = "http://upload.qiniup.com" + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + fileName;//重命名文件加上时间戳 其中上传地址也可以配置
HttpResult result = um.UploadStream(stream, saveKey, uploadToken); if (result.Code == )
{
return Json(result.Text);
}
else
{
throw new Exception(result.RefText);//上传失败错误信息
}
}
}
return null;
}
如有问题,欢迎指正
.NET Core----七牛云图片上传的更多相关文章
- angular封装七牛云图片上传,解决同一页面多个上传按钮分别上传
step1:引入文件 引入Plupload *该SDK上传功能集于Plupload插件封装,所以需要下载Plupload; plupload.dev.js 引入qiniu.js为了简便,当时直接从官网 ...
- 图床工具PicGO实现七牛云图片上传
图床工具PicGO实现七牛云图片上传 我们在写博客或者网络文章时经常需要上传图片.目前最有名气的图床工具就是PicGO. 简单的界面,完整的功能,在相册里也能直接复制markdown图片链接.一直深受 ...
- tp5.0整合七牛云图片上传
转:https://www.cnblogs.com/adobe-lin/p/7699638.html 这里以上传图片为例 上传其他文件也是大同小异 使用composer安装gmars/tp5-qini ...
- node 七牛云图片上传
后端代码 //https://portal.qiniu.com/user/key var accessKey = '-xxx-QvPiZzXYWY9AuytTjgix'; var secretKey ...
- ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)
ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...
- tp 七牛云文件上传
1.先创建好七牛云账号和存储空间 申请七牛云账号: 创建七牛云存储空间: 在账号的秘钥管理里面创建秘钥 获取AccessKey / SecretKey: 2.集成PHP-SDK 七牛云开发文档:htt ...
- 七牛云覆盖上传 php
使用七牛云过程中遇到了需要上传覆盖的情况,最终解决,分享给大家. 七牛云sdk上传示例中是这样写的 <?php require_once 'path_to_sdk/vendor/autoload ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...
- laravel 7七牛云文件上传
1:composer下载七牛云 composer require itbdw/laravel-storage-qiniu 2:打开 config 文件夹下的 app.php 文件,在 provider ...
- 七牛图片上传JSSDK
BASE64图片上传 接口说明: POST /putb64/<Fsize>/key/<EncodedKey>/mimeType/<EncodedMimeType>/ ...
随机推荐
- Flutter绘制波浪
以上动画是仿照 里面的物理动画还未仿写 代码见 https://github.com/dnoyeb/syk_flutter
- Flutter获取屏幕宽高和Widget大小
我们平时在开发中的过程中通常都会获取屏幕或者 widget 的宽高用来做一些事情,在 Flutter 中,我们可以使用如下方法来获取屏幕或者 widget 的宽高. MediaQuery 一般情况下, ...
- 前端知识之jQuery
通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行"操作"(actions). http://www.runoob.com/jquery/jquery ...
- 【BZOJ4029】[HEOI2015]定价(贪心)
[BZOJ4029][HEOI2015]定价(贪心) 题面 BZOJ 洛谷 题解 每次加上十进制下的\(lowbit\)就行了??? #include<iostream> #include ...
- GraphQL
GraphQL 官方描述: GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时. GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地 ...
- 升级AndroidStudio3.4问题汇总
1.Could not get unknown property 'bootClasspath' for object of type org.gradle.api.tasks.compile.Com ...
- 传入list或map进行首字母大小写转换
/** * 首字母小写 * author:wp */ public static Object keyFirstToLower(Object obj) throws Ex ...
- js重点--原型链
通过将一个构造函数的原型对象指向父类的实例,就可以调用父类中的实例属性及父类的原型对象属性,实现继承. function animals(){ this.type = "animals&qu ...
- 各类聚类(clustering)算法初探
1. 聚类简介 0x1:聚类是什么? 聚类是一种运用广泛的探索性数据分析技术,人们对数据产生的第一直觉往往是通过对数据进行有意义的分组.很自然,首先要弄清楚聚类是什么? 直观上讲,聚类是将对象进行分组 ...
- Unity 大中华区核心业务
Unity 大中华区核心业务: UnityTechnologies:引擎技术 UnitySolutions:解决方案 AssetStore:开发插件 UnityGames:发行服务 UnityEduc ...