首页 > 其他分享 >.net 4.8 webApi 文件下载部分代码记录

.net 4.8 webApi 文件下载部分代码记录

时间:2024-05-21 13:40:26浏览次数:28  
标签:webApi stream filePath HttpResponseMessage 4.8 new net response 下载

 private HttpResponseMessage ExportData(string ids, Func<string,string> exportFunc,string dataNotExistsMsg)
        {
            var filePath = exportFunc.Invoke(ids);
            // 检查文件是否存在
            if (!File.Exists(filePath))
            {
                return Request.CreateResponse(HttpStatusCode.NotFound, new BaseResponseDto() { Message = $"{dataNotExistsMsg}" });
            }

            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
            try
            {
                var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                response.Content = new StreamContent(stream);
                response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");//这里可以改为通用的application/octet-stream,表示下载的是二进制的流。如果改为 png/pdf 浏览器会自动打开不展示下载
                response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = Path.GetFileName(filePath)
                };
                response.Content.Headers.ContentLength = stream.Length;
              
            }
            catch
            {
                response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
            }
            return response;
        }

 另外,如果配置了swagger ,使用swagger去调试下载文件接口,那么下载的文件会无法打开,提示文件错误,且下载的文件大小和源文件大小不一致,不知道是swagger哪里出了问题,但是如果直接用浏览器访问url下载,下载所得的文件大小又和源文件一样大,而且可以正常打开 。

标签:webApi,stream,filePath,HttpResponseMessage,4.8,new,net,response,下载
From: https://www.cnblogs.com/INetIMVC/p/18203827

相关文章

  • .net8 winform程序使用EntityFrameworkCore连接数据库
    在.NET8WinForms应用程序中使用EntityFramework(EF)Core,你需要按照以下步骤操作:1.添加EntityFrameworkCoreNuGet包。2.定义你的数据模型。3.创建数据库上下文(DbContext)。4.在数据库上下文中配置EntityFramework。5.使用EntityFrameworkCore的API来执行数据库操作。......
  • dotnet 命令行工具解决方案 PomeloCli
    目录PomeloCli是什么为什么实现太多的工具太少的规范基于二进制拷贝分发难以为继快速开始1.引用PomeloCli开发命令行应用2.引用PomeloCli开发命令行插件开发命令行插件搭建私有nuget服务发布命令行插件3.使用PomeloCli集成已发布插件安装命令行宿主集成命令行插件卸......
  • .NET 中的表达式树
    .NET中的表达式树(ExpressionTrees)表达式树是什么?表达式树(ExpressionTrees)是.NET框架中的一个强大功能,它将代码表示为一个由表达式节点组成的树形结构。每个节点代表代码中的一个操作,例如方法调用、算术运算、逻辑运算等。表达式树允许开发者在运行时分析、修改和执行代码。......
  • EDP .Net开发框架--WebApi
    平台下载地址:https://gitee.com/alwaysinsist/edp按分类管理EDP所提供的WebApi接口,以供其他应用调用。WebApi接口不仅可以进行访问控制管理,同时还提供了版本管理,同一WebApi接口支持多个不同版本以满足接口调用方的多版本支持。WebApi接口的数据是通过调用业务方法来获取的,而业......
  • skynet框架:单点服务性能优化思路
    skynet框架下的业务开发,单点服务是存在理论瓶颈的。当业务上存在并发请求的场景时,服务会成为性能热点,达到服务的消费瓶颈,出现过载。原则上讨论,当业务需求一个执行单位成为并发热点,那么实现这个执行单位就需要是足够支撑业务上限的方案。基于这个思路,讨论几个优化:解耦;降低过载......
  • .NET 中的表达式树
    .NET中的表达式树(ExpressionTrees)表达式树是什么?表达式树(ExpressionTrees)是.NET框架中的一个强大功能,它将代码表示为一个由表达式节点组成的树形结构。每个节点代表代码中的一个操作,例如方法调用、算术运算、逻辑运算等。表达式树允许开发者在运行时分析、修改和执行代码。......
  • Liunx部署NetCore,接口获取mysql本地数据时报:The SSL connection could not be establ
    今天将 NETCore程序发布到一台新的服务器,程序中有https请求第三方的Api,但是报了如下的错误:TheSSLconnectioncouldnotbeestablished,seeinnerexception解决办法下面命令查询openssl的路径opensslversion-a然后将CentOS默认的opensslCA证书拷贝到OPENSSLD......
  • netcore6 发布到linux centos7 踩坑记录
    具体dotnet6部署的过程,用守护进程。参考:https://blog.csdn.net/qq_45602658/article/details/129299814还有解决出现dotnet:/lib64/libstdc++.so.6:versionGLIBCXX_3.4.21&#x27;notfound(requiredbydotnet)dotnet:/lib64/libstdc++.so.6:未找到版本GLIBCXX_3.4.21(dot......
  • VUE,HbuilderX开发H5页面,配置调试,部署以及JWT,Token。调用本机netcore接口
    花了一周时间,测试了各种方式。对于VUE开发H5页面,然后部署到Nginx服务。再调用本地的HTTPS接口。1、本地开发及使用IE或Chrome进行开发调试,并调用本地接口同步开发。本地Netcore,开发按原有方式进行。Hbuilderx,开发并调用本地接口。设置时,不要使用Https进行。直接用http即可。Hbuild......
  • Kubernetes Pod调度:从基础到高级实战技巧
    本文深入探讨了Kubernetes中的Pod调度机制,包括基础概念、高级调度技术和实际案例分析。文章详细介绍了Pod调度策略、Taints和Tolerations、节点亲和性,以及如何在高流量情况下优化Pod调度和资源管理。关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10......