第一步:
先在七牛云官网注册一个账号
然后点击对象存储-空间管理-新建空间 创建一个存储空间
创建好之后就完成了第一步 可以往里面放东西了
第二步:
打开你的VS 创建一个类 改成静态类 方便外部调用
写一个静态的方法
/// <summary>/// 上传文件类/// </summary>public static class FileHelper{/// <summary> /// 上传文件到七牛云 /// </summary> /// <param name="formFile">本地文件路径</param> /// <param name="key">在七牛云上的文件名</param> /// <returns>上传结果</returns> public static HttpResult UploadFile(IFormFile file){try{// 定义常量const string accessKey = "AK";//公钥const string secretKey = "SK";// 输入秘钥Mac mac = new Mac(accessKey, secretKey);// 创建上传配置 Config config = new Config();// 使用Zone0作为上传区域,你可以根据需要更改 config.Zone = Zone.ZONE_CN_East;// 初始化上传管理对象 FormUploader formuploader = new FormUploader(config);// 调用SDK上传文件 try{//打开文件流using (Stream? stream = file.OpenReadStream()){// 生成上传凭证 PutPolicy putPolicy = new PutPolicy();// 七牛云空间名称putPolicy.Scope = "存储空间的名称";// 生成上传凭证 string upToken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());// 保留原始文件名(包含扩展名) string key = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');// 创建HttpResult对象用于存储上传结果 HttpResult result = formuploader.UploadStream(stream, key, upToken, null);// 返回上传结果 return result;}}catch (Exception ex){// 处理其他异常 Console.WriteLine("上传文件发生异常: {0}", ex.Message);throw;}}catch (Exception){throw;}}/// <summary> /// 批量上传文件到七牛云 /// </summary> /// <param name="formFiles">本地文件集合</param> /// <returns>上传结果列表</returns> public static List<HttpResult> BatchUploadFiles(List<IFormFile> formFiles){List<HttpResult> results = new List<HttpResult>();// 定义常量 const string accessKey = "AK";const string secretKey = "SK";// 输入秘钥 Mac mac = new Mac(accessKey, secretKey);// 创建上传配置 Config config = new Config();// 使用Zone0作为上传区域,你可以根据需要更改 config.Zone = Zone.ZONE_CN_East;// 初始化上传管理对象 FormUploader formUploader = new FormUploader(config);foreach (var file in formFiles){try{// 打开文件流 using (Stream stream = file.OpenReadStream()){// 生成上传凭证 PutPolicy putPolicy = new PutPolicy();// 七牛云空间名称 putPolicy.Scope = "存储空间的名称";// 生成上传凭证 string upToken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());// 保留原始文件名(包含扩展名) string key = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');// 调用SDK上传文件 HttpResult result = formUploader.UploadStream(stream, key, upToken, null);// 将结果添加到列表中 results.Add(result);}}catch (Exception ex){// 处理单个文件上传异常,并记录或处理错误 Console.WriteLine($"上传文件 {file.FileName} 发生异常: {ex.Message}");// 这里可以选择不抛出异常,而是继续处理下一个文件 // 或者你可以根据需要决定是否需要抛出异常 // throw; }}// 返回所有文件的上传结果 return results;}/// <summary> /// 从七牛云下载文件-注意:是异步方法/// </summary> /// <param name="fileName">文件名</param> /// <param name="localFilePath">本地保存路径</param> /// <returns>一个表示操作是否成功的布尔值</returns> public static async Task<bool> DownloadFileAsync(string fileName){try{// 构建下载链接 var downloadUrl = $"http://你的外部链接/{fileName}";//你的外部链接+文件名//下载的文件目录const string targetDirectory = @"D:\下载"; //下载的路径// 使用 HttpClient 来执行下载 using (var httpClient = new HttpClient()){var response = await httpClient.GetAsync(downloadUrl);if (response.IsSuccessStatusCode){// 构建本地保存文件的完整路径,包括文件名 var localFilePath = Path.Combine(targetDirectory, fileName);// 确保本地目录存在 var directory = Path.GetDirectoryName(localFilePath);if (!Directory.Exists(directory)){Directory.CreateDirectory(directory);}// 将文件内容写入到本地文件 using (var stream = await response.Content.ReadAsStreamAsync())using (var fileStream = File.Create(localFilePath)){await stream.CopyToAsync(fileStream);}return true; // 下载成功 }else{Console.WriteLine($"下载失败,状态码:{response.StatusCode}");return false; // 下载失败 }}}catch (Exception ex){Console.WriteLine($"下载时发生异常:{ex.Message}");throw; // 重新抛出异常 }}}//然后控制器里调用静态方法/// <summary>/// 上传文件到七牛云/// </summary>/// <param name="file">文件</param>/// <returns>是否成功</returns>[HttpPost]public IActionResult AddFile(IFormFile file){var res = FileHelper.UploadFile(file);return Ok(file.FileName);}/// <summary>/// 批量上传文件到七牛云/// </summary>/// <param name="formFiles"> 文件集合</param>/// <returns> 是否成功</returns>[HttpPost]public IActionResult BatchUploadFiles(List<IFormFile> formFiles){var res = FileHelper.BatchUploadFiles(formFiles);return Ok(res);}
然后就完事了