基于.net core 七牛云上传多图片
一、基于.net core 七牛云上传图片上传
-
创建七牛云账号,链接:https://portal.qiniu.com/home
-
新建空间(可以选择华北,可设置公开或私有(公开返回前台不需要token))
- 单图片上传
下载包
```c#
/// <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的位置
- 然后就可以测试了
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步