一、基於.net core 七牛雲上傳圖片上傳
-
建立七牛雲賬號,連結:https://portal.qiniu.com/home
-
新建空間(可以選擇華北,可設定公開或私有(公開返回前臺不需要token))
-
單圖片上傳
/// <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錯誤響應,包含錯誤資訊 } }
-
多圖片上傳
/// <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; }
-
其中AK和SK的位置
- 然後就可以測試了