如何在 ASP.NET Web API 中设置下载文件名 ?
咨询区
Tae-Sung Shin:
在我的 ApiController 类中,有一个下载文件的Action方法,代码如下:
public HttpResponseMessage Get(int id)
{try{string dir = HttpContext.Current.Server.MapPath("~"); //location of the template fileStream file = new MemoryStream();Stream result = _service.GetMyForm(id, dir, file);if (result == null){return Request.CreateResponse(HttpStatusCode.NotFound);}result.Position = 0;HttpResponseMessage response = new HttpResponseMessage();response.StatusCode = HttpStatusCode.OK;response.Content = new StreamContent(result);return response;}catch (IOException){return Request.CreateResponse(HttpStatusCode.InternalServerError);}
}
代码运行是没有任何问题的,有一点不爽的是每次下载的文件名都是一串id,导致用户每次在对话框中保存的时候都需要修改成语义化的名字,我的想法是能不能在 API 端直接设置成默认名字呢?
回答区
Darin Dimitrov:
这个很简单,在 HttpResponseMessage 的 header 中设置一下 Content-Disposition
即可,参考如下代码:
HttpResponseMessage response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.OK;
response.Content = new StreamContent(result);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{FileName = "foo.txt"
};
sorenhk:
只要确保你的文件名是一个正确编码的格式,而且你也不想用 WebApi 的 HttpResponseMessage 的话,推荐直接设置 Response, 参考如下代码:
Response.AddHeader("Content-Disposition", new System.Net.Mime.ContentDisposition("attachment") { FileName = "foo.txt" }.ToString());
或者这样:
Response.Headers.Add("Content-Disposition", $"attachment; filename={myFileName}");
点评区
这种需求在 webapi 开发中还是蛮容易遇到的,不管什么途径最终都是设置 Content-Disposition
,学习了。
如何在 ASP.NET Web API 中设置下载文件名 ?相关推荐
- 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.NET Web API中的HTTP Cookie 本文引自:http://www.asp.net/web-api ...
- (四)Asp.net web api中的坑-【api的返回值】
(四)Asp.net web api中的坑-[api的返回值] 原文:(四)Asp.net web api中的坑-[api的返回值] void无返回值 IHttpActionResult HttpRe ...
- ASP.NET Web API中的Controller
虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要 ...
- ASP.NET Web API中实现版本
一般来说,api 接口是提供给其他系统或是其他公司使用,不能随意频繁的变更.然而,需求和业务不断变化,接口和参数也会发生相应的变化.如果直接对原来的接口进行修改,势必会影响线其他系统的正常运行.这就必 ...
- 监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标
回顾 在<监控系统简介:使用 Prometheus 与 Grafana>一文中,我们了解了什么是监控系统,Prometheus 这一监控工具及它提供的数据类型.PromQL 以及 Graf ...
- go语言 echo框架_如何在Go Echo Web框架中设置嵌套HTML模板
go语言 echo框架 by Ying Kit Yuen 英杰苑 如何在Go Echo Web框架中设置嵌套HTML模板 (How to setup a nested HTML template in ...
- ASP.NET Web API中实现版本的几种方式
在ASP.NET Web API中,当我们的API发生改变,就涉及到版本问题了.如何实现API的版本呢? 1.通过路由设置版本 最简单的一种方式是通过路由设置,不同的路由,不同的版本,不同的contr ...
- ASP.NET Web API中的参数绑定总结
ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...
- 利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
在Asp.net Web API中,对业务数据的分页查询处理是一个非常常见的接口,我们需要在查询条件对象中,定义好相应业务的查询参数,排序信息,请求记录数和每页大小信息等内容,根据这些查询信息,我们在 ...
最新文章
- 您也使用托管C++吗?
- 关闭Delphi的RTTI
- 常见的水平居中布局方式
- 单例设计模式singleton
- ORM多表查询——关联查询
- SAP CRM中间件Object出现wait状态的原因调试
- 如何使能linux vivid
- 合并bin文件-----带boot发布版本比较好用的bat(便捷版)
- 7种有害的IT团队行为,不根除就坏大事了
- Python装饰器详解,详细介绍它的应用场景
- Linux学习总结(53)——后台启动nohup /dev/null 21 使用总结
- javase基础复习攻略《六》
- 使窗口(和 MDI 子窗口)的关闭按钮变灰的方法 - 回复 梦想成真
- 基于Yolov5目标检测的物体分类识别及定位(一) -- 数据集原图获取与标注
- DataGame: IKCEST 2019
- c226打印机驱动安装_打印机驱动怎么安装?
- 通达oa SQL注入day
- 利用vbs脚本实现自动发送微信消息
- 农业大省吉林谋乡村全面振兴:农业强、农村美、农民富
- c语言settextstyle有哪些字体,settextstyle() 设置文本型式函数
热门文章
- 单IP无TMG拓扑Lync Server 2013:前端服务器
- 【转】服务器维护工程师悲惨的一个星期
- Mock2 moco框架的http协议get方法Mock的实现
- (转)学习密度与专注力
- windows 系统监视器_使用Windows 7中的可靠性监视器对计算机问题进行故障排除
- 如何在Android主屏幕上添加热点快捷方式
- esxi.主机配置上联端口_为什么现代的电脑机箱仍然具有USB 2.0端口?
- java部分服务出现异常_Java web service 异常
- 8支团队正在努力构建下一代Ethereum
- Golang并发模型:合理退出并发协程