第一步:
先在七牛云官网注册一个账号
然后点击对象存储-空间管理-新建空间 创建一个存储空间
创建好之后就完成了第一步 可以往里面放东西了
第二步:
打开你的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);
}
然后就完事了
标签:文件,七牛云,string,file,var,new,文件批量,上传 From: https://www.cnblogs.com/Ouyx/p/18197529