asp.net-mvc – Web API返回csv文件
发布时间:2020-12-16 00:11:04 所属栏目:asp.Net 来源:网络整理
导读:我需要从web api控制器获取一个csv文件.我无法显示“另存为”对话框.只有文本输出显示在页面上.我试过两个,从jquery调用Export,也是普通的旧html 控制器: [System.Web.Http.HttpGet]public HttpResponseMessage Export(){ StringBuilder sb = new StringBui
我需要从web api控制器获取一个csv文件.我无法显示“另存为”对话框.只有文本输出显示在页面上.我试过两个,从jquery调用Export,也是普通的旧html
控制器: [System.Web.Http.HttpGet] public HttpResponseMessage Export() { StringBuilder sb = new StringBuilder(); IEnumerable<CustomerDiscount> list = this.subscriberRepository.GetSubscribers(); foreach (CustomerDiscount item in list) { sb.AppendFormat( "{0};{1};{2};",item.CustomerName,item.CustomerNumber,Environment.NewLine); } MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write(sb.ToString()); writer.Flush(); stream.Position = 0; HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StreamContent(stream); result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv"); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "Export.csv" }; return result; } 编辑: result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "Export.csv" }; 仍然不起作用 我称之为: <a id="export" href="/Relay/Billing/Export" class="btn btn-primary">Export</a> 并尝试过这样: $("#export").click(function () { $.post("/Relay/Billing/Export",{ type: $("#discountType").val() }) .done(function (data) { }); }); 仍然没有“另存为”框 解决方法
我不知道这是否是正确的协议,但这是我之前做过的.所以你有一个网页,你将从中调用一个API来响应文件,它应该由浏览器的另存为对话框来处理.
HTML: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function save() { window.open('http://localhost:45719/api/home?id=12','_blank',''); } </script> </head> <body> <a class="btn btn-primary" onclick="save()">Export</a> </body> </html> 那个行动: public HttpResponseMessage Get(int id) { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write("Hello,World!"); writer.Flush(); stream.Position = 0; HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StreamContent(stream); result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv"); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "Export.csv" }; return result; } 这对我来说最适合Chrome和Firefox. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 是否由Razor支持lambda表达式?
- ASP.NET – 将JSON从jQuery传递到ASHX
- asp.net – Windows Azure – 频繁的协议违规,内容长度不匹
- asp.net – 使用回发解析.Net页面
- 什么是 ASP+?微软 .NET 框架
- 集成ASP.NET Webforms,WebAPI和AngularJS
- asp.net – 对我来说MVC?
- ASP.NET相当于PHP的$_GET和$_POST?
- asp.net-mvc – Web API 2需要使用尾部斜杠来使自定义属性路
- asp.net-mvc – ASP.NET MVC LINQ to SQL或Entities?
推荐文章
站长推荐
热点阅读