栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.NET5 WebAPI 上传、下载文件,基于 IFormFile

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.NET5 WebAPI 上传、下载文件,基于 IFormFile

  1.  IFormFile 使用可以看官方文档
  2.  上传端(客户端),通过文件流的方式 进行上传调用接口 POST
    MultipartFormDataContent构造参数和文件对象
           public async Task> UploadTestAsync()
            {
                var fileAdd = @"D:UploadReport中国调查报告-张某某(绿灯).doc";
    
                FileStream fileStream = new FileStream(fileAdd, FileMode.Open);
                using (var multipartContent = new MultipartFormDataContent())
                {
                    //multipartContent.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(fileAdd)), "File", "中国调查报告(绿灯).doc");
                    //文件对象 File 需要接受方的参数一致
                    multipartContent.Add(new StreamContent(fileStream), "File", @"调查报告-张某某(绿灯).doc");
    
                    // 构建其他上传参数
                    multipartContent.Add(new StringContent("CS21040800001"), "OrderId");
                    multipartContent.Add(new StringContent("测试版本"), "ReprotVersion");
                    multipartContent.Add(new StringContent("测试"), "BusinessOrigin");
    
                    using (var httpClient = new HttpClient())
                    {
                        httpClient.BaseAddress = new Uri("http://IP:7123");
                        return  await httpClient.PostAsync("/XXX/File/UploadAsync", multipartContent);
                    }
                }
            }

     

  3. 上传文件接口:服务端(接受端) 接受上传文件流 IFormFile接受文件对象
     
        public async Task UploadAsync([FromForm] FileReportDto fileModel)
       {
                 //需要存储文件
                   var filefullPath = @"D:UploadReport中国调查报告-张某某1(绿灯)3.doc";
                    using (FileStream fs = new FileStream(filefullPath, FileMode.Create))
                    {
                        fileModel.File.CopyTo(fs);
                        fs.Flush();
                    }
    
                 //拿到文件流可以做其他操作 ,结合自己业务
        }
       // FileReportDto 对象
       public class FileReportDto
        {
            /// 
            /// 
            /// 
            public string OrderId { get; set; }
    
            /// 
            /// 报告文件对象
            /// 
            public IFormFile File { get; set; }
    
            /// 
            /// 
            /// 
            public string ReprotVersion { get; set; }
    
            /// 
            /// 
            /// 
            public string BusinessOrigin { get; set; }
        }

     

  4.  下载文件接口 (文件流方式)
     public async Task DownStreamAsync(string orderId)
            {
                try
                {
                   //获取文件信息 ,自己的业务
                   
                   //下载文件
                       using (WebClient wclient = new WebClient())
                        {
                           //从远程获取文件流(本地也可以获取),参考客户端方法
                            var fileStream = wclient.OpenRead(https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2019/05/dotnet5_platform.png);
                      
                           //获取文件扩展名,并返回对应的文件类型      
                            var ext = fileResult.FileName.Substring(fileResult.FileName.LastIndexOf("."));
                            new FileExtensionContentTypeProvider().Mappings.TryGetValue(ext, out var contenttype);
                            return File(fileStream, contenttype ?? "application/octet-stream", fileResult.FileName);
                        }
                }
                catch (Exception ex)
                {
                    _nLogHelper.Error($"下载异常【】,{ex.Message}");
                    return new JsonResult(new ReturnResult { IsSuccess = false, Message = $"下载异常:{ex.Message}", Data = $"" });
                }
            }
    

     

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/904790.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号