.NET Core项目----七牛云图片上传

在引用官方的qiniu.core的nuget是总是发生错误,错误如下,所以就在网上找到了一种解决方案,并稍微改进了一番,

以下是引用图:

第一步:引用nuget(是位大神写的,官方的qiniu.core用不了)

第二部:新建项目新建控制器视图、添加配置信息类和读取配置信息

配置信息类:

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  其中优化了一下

原文地址:https://www.cnblogs.com/wuyabaibsd/p/9475180.html

时间: 2024-08-03 23:24:31

.NET Core项目----七牛云图片上传的相关文章

tp5.0整合七牛云图片上传

转:https://www.cnblogs.com/adobe-lin/p/7699638.html 这里以上传图片为例 上传其他文件也是大同小异 使用composer安装gmars/tp5-qiniu 安装成功则在vendor目录下多出一个目录 这个目录含有整合七牛云的所有类包等文件 控制器中添加upload方法 public function upload() { if(request()->isPost()) { $qiniu = new \gmars\qiniu\Qiniu('你的ak'

node 七牛云图片上传

后端代码 //https://portal.qiniu.com/user/key var accessKey = '-xxx-QvPiZzXYWY9AuytTjgix'; var secretKey = '-xxx'; var mac = new qiniu.auth.digest.Mac(accessKey, secretKey); var options = { scope: "xxx" //存储空间的名字,创建的存储空间的时候,自己取的名字 }; var putPolicy =

ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/1237/csharp UpoladService示例代码: public class UpoladService : IUpoladService {     private readonly static string[] _imageExtensions = new string[] { ".jpg", ".png", ".gif&quo

使用七牛云存储上传文件学习案例

最近学习了使用七牛云储存上传文件的经验过程,和大家分享一下.语言:C# 七牛云储存用户注册地址:https://portal.qiniu.com/signup?code=3lciek5byj2oi 起初看七牛云储存官方的开发文档,按照上面的说的进行配置的过程中,遇到了2个问题,一个是公司网络的问题(泪奔,网管拒绝了对七牛等云储存应用的上传的请求).另一个是开发文档中配置提示不够完善,也许是鄙人没有找到. 开发文档URL:http://developer.qiniu.com/docs/v6/sdk

话说android端七牛图片上传

七牛图片上传业务流程如下图(这是官方的图): 由上图可知,要想实现图片上传,是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行) 接下来步骤如下: 1.首先肯定是要有一个七牛的账号,并创建一个空间 2.客户端向业务服务器(也就是客户端的应用服务器)发请求你要上传多上张图片 3.业务服务器根据客户端的请求向七牛云存储生成token(应用的服务器下载好相应的七牛sdk然后根据接口文档所述向七牛服务器请求token,token相当于一把钥匙,具体代码我也不知道怎么实现,毕竟我不是写后台的

七牛云存储文件上传与下载

"陪你"校园陌生人交友APP中使用了七牛云存储,因此关注了一下这个人气很高的公有云平台的使用.七牛使用K-V的方式存放文具.在上传文件的时候,需要保证文件名是唯一的,当然,也可以不提供文件名(key),系统会自动将文件的MD5作为key.但是有一个问题,这样的话,不同用户就不能够上传相同的图片了,因为HASH值是一样的,上传失败.七牛给了我们一套使用上传策略(PutPolicy)计算上传令牌(UploadToken)的方法,下载同样需要下载令牌.这些值都是通过七牛提供的AccessKe

七牛云文件上传助手

qiniuyun_upload_tools 最近写博客发现经常要上传图片到七牛云上去,每次打开网页登录然后上传感觉很慢,windows也没有一个好的上传工具,于是写了这样的一个工具. 效果 使用方法 下载程序包点击下载 解压后直接在config.json文件里面天上自己七牛云相关的信息. config { "access_key": "************", "secret_key": "***************"

ABP Core 后台Angular+Ng-Zorro 图片上传

Ng-zorro upload 控件介绍 https://ng.ant.design/components/upload/zh#components-upload-demo-custom-request 官网示例效果 官网示例代码 import { Component } from '@angular/core'; import { NzMessageService, UploadFile } from 'ng-zorro-antd'; @Component({ selector: 'nz-de

webuploader项目中多图片上传实例

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title> 百度uploader Demo</title> <!--引入CSS--> <link rel="stylesheet" type="t