基于.net core 七牛云上传多图片

一、基于.net core 七牛云上传图片上传

  1. 创建七牛云账号,链接:https://portal.qiniu.com/home

  2. 新建空间(可以选择华北,可设置公开或私有(公开返回前台不需要token))

  1. 单图片上传

下载包

  ```c#
  /// <summary>
  /// 上传文件
  /// </summary>
  /// <param name="file"></param>
  /// <returns></returns>
  [HttpPost] // 指定该方法处理 HTTP POST 请求
  public async Task<IActionResult> UploadImages(IFormFile file) // 定义一个异步方法,接收一个文件类型的参数
  {
      if (file == null || file.Length == 0) // 检查文件是否为空或文件大小
      {
          return BadRequest("文件不能为空"); 
      }
  
      string saveKey = "Pic/" + file.FileName; // 设置上传文件保存的路径和文件名,可以随便输入 不用创建可自动生成
      string bucket = "空间管理的名称"; // 七牛云存储空间名称   七牛云仓库名称
      Mac mac = new Mac("AK", "SK"); // 替换为您七牛云账号的访问密钥和密钥
  
      // 设置上传策略
      PutPolicy putPolicy = new PutPolicy();
      putPolicy.Scope = bucket + ":" + saveKey; // 设置 Scope 为具体的文件路径,即指定存储空间和保存路径
  
      // 创建上传凭证
      string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); // 生成上传凭证,凭证包含了上传策略信息
  
      // 配置上传管理器
      Config config = new Config();
      config.Zone = Zone.ZONE_CN_North; // 设置上传区域,这里是华北区域   自己选的区域,这个是华北,别的自己搜一下
      config.UseHttps = true; // 使用 HTTPS 进行上传
      config.UseCdnDomains = true; // 使用 CDN 域名加速上传
      config.ChunkSize = ChunkUnit.U512K; // 设置分块上传的块大小
  
      // 实例化表单上传对象
      FormUploader target = new FormUploader(config);
  
      // 上传文件
      HttpResult result = target.UploadStream(file.OpenReadStream(), saveKey, token, null); // 调用上传方法,上传文件流,传入保存路径和上传凭证
  
      // 检查上传结果
      if (result.Code == 200) // 判断上传是否成功(返回状态码200表示成功)
      {            
          return Ok(file.FileName); // 返回200响应,上传成功,返回文件名
      }
      else
      {
          return BadRequest("上传失败:" + result.Text); // 如果上传失败,返回400错误响应,包含错误信息
      }
  }
  
  ```
  1. 多图片上传

     /// <summary>
     /// 多图片上传
     /// </summary>
     /// <param name="fileser"></param>
     /// <returns></returns>
     /// <exception cref="Exception"></exception>
     [HttpPost]
     public List<Object> UploadQiniu([FromForm(Name = "file")] List<IFormFile> fileser)
     {
         Mac mac = new Mac("AK", "SK"); // 替换为您七牛云账号的访问密钥和密钥
         PutPolicy putPolicy = new PutPolicy();
         putPolicy.Scope = "空间管理的名称";//图片存放七牛云地址
         string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); // 生成上传凭证,凭证包含了上传策略信息
         IFormFileCollection files = Request.Form.Files;
         Config config = new Config()
         {
             Zone = Zone.ZONE_CN_North,//默认华北 根据选择的不同输入不同的地区
             UseHttps = true
         };
         config.UseCdnDomains = true; // 使用 CDN 域名加速上传
         var res = Request.Form.ToArray();
    
         FormUploader upload = new FormUploader(config);
         HttpResult result = new HttpResult();
         List<Object> list = new List<Object>();
         foreach (IFormFile file in fileser)//获取多个文件列表集合
         {
             if (file.Length > 0)
             {
                 var _fileName = ContentDispositionHeaderValue
                                 .Parse(file.ContentDisposition)
                                 .FileName
                                 .Trim('"');
                 var _qiniuName =   "Pic/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff")  + file.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;
     }
    
    
  2. 其中AK和SK的位置

  1. 然后就可以测试了
posted @   浅心溪  阅读(125)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示