基於.net core 七牛雲上傳多圖片

幕雪發表於2024-05-17

一、基於.net core 七牛雲上傳圖片上傳

  1. 建立七牛雲賬號,連結:https://portal.qiniu.com/home

  2. 新建空間(可以選擇華北,可設定公開或私有(公開返回前臺不需要token))

  1. 單圖片上傳

    /// <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錯誤響應,包含錯誤資訊
        }
    }
    
    
  2. 多圖片上傳

     /// <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;
     }
    
    
  3. 其中AK和SK的位置

  1. 然後就可以測試了

相關文章