首页 > 其他分享 >七牛云文件批量上传加单个上传和下载

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

时间:2024-05-17 11:29:45浏览次数:24  
标签:文件 七牛云 string file var new 文件批量 上传

第一步:

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

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

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

第二步:

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

相关文章

  • 任意文件上传下载漏洞
    任意文件下载漏洞产生原因进行文件包含展示或者文件下载的没有对用户访问的url进行过滤导致任意文件下载漏洞出现,也可以叫做目录穿越漏洞。事故多发地经常在如下的url中:download?path=down?file=data?file=download?filename=?src=?filepath=?path=?data=利用方法......
  • 文件上传和下载
    1.准备工作对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的。—般选择采用apache的开源工具common-fileupload这个文件上传组件。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。前往Maven仓库去下载:common-io-2.4:https://mvnrepos......
  • python代码上传文件到fastdfs
    Install直接pip安装,需要Python3.10+pipinstallfastdfs-clientInitialclient可以用其他教程的client.conf配置文件的方式,也可以直接传入ip列表进行初始化fromfastdfs_clientimportFastdfsClientclient=FastdfsClient(trackers=('ip1','ip2',...))Uploadbyfil......
  • 【django学习-28】列表界面模板下载与上传文件
    前言,我们在实际项目开发过程中,经常有列表界面,有上传功能,并且支持先下载模板,后上传1.实现效果与前端展示<formmethod="post"enctype="multipart/form-data"action="/depart/multi/">{%csrf_token%}<divclass="form-group"><inputtyp......
  • 【django学习-27】media介绍与文件上传
    前言:django开发过程中,有2个文件夹(也即:目录)比较特殊:static文件夹(目录)、media文件夹(目录)。static目录:我们项目自己用到的文件(css、js、项目图片、插件),建议放在static目录下。media目录:用户自己上传的文件等资源,建议放在media目录下。要想用media目录,必须先配置启用它。1.me......
  • Selenium4自动化测试8--控件获取数据--上传、下载、https和切换分页
    系列导航一、Selenium4自动化测试1--Chrome浏览器和chromedriver二、Selenium4自动化测试2--元素定位By.ID,By.CLASS_NAME,By.TAG_NAME三、Selenium4自动化测试3--元素定位By.NAME,By.LINK_TEXT和通过链接部分文本定位,By.PARTIAL_LINK_TEXT,css_selector定位,By.CSS_SELECTOR四、j......
  • python sftp文件上传和Dockerfile部署步骤
    ##1、脚本app.py#-*-coding:utf8-*-importosimportparamikofromdatetimeimportdatetime,timedeltafromflaskimportFlask,requestapp=Flask(__name__)#从环境变量中获取配置信息host=os.getenv("SFTP_HOST")port=int(os.getenv("SFTP_PORT&q......
  • 使用Git命令从本地上传到码云
    Gitee创建仓库内没有内容本地:初始化Git仓库:gitinit提交文件到暂存区:gitadd.//.表示提交所有文件提交文件到工作区:gitcommit-m"此次提交的描述,简介明了的描述"关联码云仓库:gitremoteaddoriginhttps://gitee.com/xxxx/xxxxx.git推送到远程仓库:gitpush-uorigin......
  • Angular 结合primeNG 批量上传文件
    1:angular使用primeNG批量上传文件的操作(分两步,先上传文件到minio文件服务器,在写入到业务数据)2:前端htmlcode<div><p-fileUploadmode="basic"name="files"url="{{flieUploadFiles}}"accept="image/*"(onUpload)="onfilesupl......
  • C#使用PuTTY加密上传文件
    需求:加密通过SFPT上传文件1.安装PuTTY2.生成文件,文件不用后缀名 3.上代码classProgram{privatestaticstringfile="C:\\Users\\3859\\Desktop\\RODHoldToRepairOrScrapListKSZRODHL2022-10-28\\T326\\ReceivingReport-20240510100.xlsx";s......