一、基于.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的位置
- 然后就可以测试了