七牛云文件批量上传加单个上传和下载

news/2024/11/19 21:33:45/文章来源:https://www.cnblogs.com/Ouyx/p/18197529

第一步:

先在七牛云官网注册一个账号

然后点击对象存储-空间管理-新建空间 创建一个存储空间

创建好之后就完成了第一步 可以往里面放东西了

第二步:

打开你的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);}

然后就完事了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707680.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 ts 集成 tinymce

首先引入 @tinymce/tinymce-vueyarn add @tinymce/tinymce-vue -S 我的版本是 然后写一个组件<template><main id="sample"><Editor v-model="editorData" api-key="j7tvgx4xnptg3cjd63cfnl62z9s78uylw4o7vkkwdljjy91e" :init=…

tinymce 集成 vue3 ts

首先引入 @tinymce/tinymce-vueyarn add @tinymce/tinymce-vue -S 我的版本是 然后写一个组件<template><main id="sample"><Editor v-model="editorData" api-key="j7tvgx4xnptg3cjd63cfnl62z9s78uylw4o7vkkwdljjy91e" :init=…

IBM X3650 M4服务器使用U盘重装系统教程

一、前期准备工作 1、已经制作完成的系统U盘(笔者使用魔术师制作的启动盘) 2、下载好的windows_server_2008_r2镜像 3、下载好的.M5110e阵列卡驱动 二、安装过程 1、将前期准备的镜像、阵列驱动拷贝到优盘根目录下2、优盘插入服务器后启动服务器,开机后会进入图1,等待后在图…

打开、关闭、切换App以及清除App进程,操作so easy!

有很多新手同学经常问到,如何优雅地快速打开、关闭、切换APP以及清除设备应用后台,那么本周我们来分享一下怎么优雅地实现这些操作吧此文章来源于项目官方公众号:“AirtestProject” 版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途#一、前言 很多新手…

稳定、省钱的 ClickHouse 读写分离方案:基于 JuiceFS 的主从架构实践

Jerry 是一家位于北美的科技公司,利用人工智能和机器学习技术,简化汽车保险和贷款的比价和购买流程。在美国,Jerry 的应用在其所属领域排名第一。 随着数据规模的增长,Jerry 在使用 AWS Redshift 时遇到了一些性能与成本的挑战。Jerry 重新设计了系统架构,使用 ClickHouse…

GDCL论文阅读笔记

Diffusion-Based Graph Contrastive Learning for Recommendation with Implicit Feedback论文阅读笔记 Abstract 提出问题: ​ 自监督学习模型大多采用随机辍学来构造附加的图视图,没有区分边的重要性。这些方法在捕获用户-项目交互图的结构属性方面的不足,导致了推荐性能的…

关于IDEA使用xml实现动态sql的问题

如上图,我在mapper层编写了一个list方法用于实现动态sql。 1.导入使用xml文件的mybatis依赖。 2.配置文件的修改 .properties .yml mybatis.mapper-locations=classpath:mapper/*.xml:这个配置项指定了 MyBatis 映射器 XML 文件的位置。 值 classpath:mapper/*.xml 表示 MyBa…

基于LoRa的智慧农业解决方案--ASR6601、SX1278、SX1262

我国《数字乡村发展战略纲要》明确指出“要推进农业数字化转型”,加快推广云计算、大数据、物联网、人工智能在农业生产经营管理中的运用。然而,目前我国的农业数字化转型还面临着诸多挑战。我国整体农业机械化程度和自动化控制水平仍然较低。由于农田面积广袤,大量的区域没…

服务器mac地址变化

检查是否开启了多路复用检查是否开启了随机硬件地址留待后查,同时方便他人 联系我:renhanlinbsl@163.com

基于阿里云实现手机号验证功能

一、阿里云手机短信验证码服务阿里云创建账号 https://home.console.aliyun.com/home/dashboard/ProductAndService搜索短信服务选择签名、资质管理、新增资质创建签名创建新模版,其中对映签名等信息查看模版获取ID 和 Key (1).选中头像,创建AccessKey创建工具类/// <summ…

第八章:路由基础

第八章:路由基础 路由: 在特定的拓扑上,选择从 source 节点到 destination 节点的路径。一个好的路由算法,即使面对 non-uniform traffic pattern,也能有效地均衡负载,使实际 throughput 更加接近于理想情况。 好的路由算法可以使路径长度尽可能短,从而减少跳数和传输的…

navicat怎么连接sqlserver

1.打开SQLServer配置管理器点击SQL Server 网络配置、把协议保持启用,如果默认已启用就不用管; 把IP地址里的IPAll里的TCP端口改为1433(SQL Server的端口是1433,Mysql的是3306); 检查SQL Native Client11.0的配置,确认协议也在开启,端口为1433; SQLServer的名称 这里的…