.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>/ ...
随机推荐
- c++使用cmake创建dpdk项目
使用cmake创建dpdk 特别注意的时,链接dpdk库时,一定要使用 -Wl,--whole-archive 和 -Wl,--no-whole-archive 包含所有的静态库,注意,不要链接 li ...
- Net包管理NuGet(1)nuget的使用方法
关于nuget,有很多介绍想要深入了解的可以看看官网https://docs.microsoft.com/zh-cn/nuget/what-is-nuget 本文简单介绍让不知道的可以快速了解 1,使 ...
- centos7和centos6通过yum安装JDK1.8
centos7和centos6通过yum安装JDK1.8 查看JDK的安装路径# java -version============================查看Linux系统版本信息# cat ...
- Python进阶8---面向对象基础1
面向对象 语言的分类 Python的类 定义 class ClassName: pass class MyCalss: """A example class"& ...
- java gusnum
package guss; import java.util.Scanner; public class gussnum { String myin; int y; public int gussnu ...
- tsc.exe 已退出 代码为 1
从微软官网下载TypeScript_Dev14Full,解决问题,下载地址https://www.microsoft.com/zh-CN/download/confirmation.aspx?id=4 ...
- Celery
在程序的运行过程中,我们经常会碰到一些耗时耗资源的操作,为了避免它们阻塞主程序的运行,我们经常会采用多线程或异步任务.比如,在 Web 开发中,对新用户的注册,我们通常会给他发一封激活邮件,而发邮件是 ...
- centos7下使用docker安装gitlab
环境背景: Docker化已经成为一种热门,记录一下使用docker引擎安装gitlab的过程. 测试环境: 系统 软件 依赖 CentOS 7.4 GitLab(latest) docker-ce ...
- JSP、HTML页面概述
1. 展示 <%-- 此页面为jsp页面 --%> <!-- <%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译 --> <%-- ...
- idea代码出现Usage of API documented as @since 1.8+ less... (Ctrl+F1)
问题: Usage of API documented as @since 1.8+ less... (Ctrl+F1) This inspection finds all usages of met ...