C# webapi HttpResponseMessage转一般处理程序handler的Httpcontext做中转。

C# webapi HttpResponseMessage文件下载,在一般处理程序调用做中转,然后页面下载,可使用下面这种方式。

 				using (HttpClient client = new HttpClient())
                {
                    HttpResponseMessage res = client.PostAsJsonAsync("http://XX.XX.XX.XX:XXXX/api/XXXXX/ExportXXXReport", shc).Result;
                    context.Response.Clear();
                    context.Response.Charset = "UTF-8";
                    context.Response.ContentEncoding = System.Text.Encoding.UTF8;
                    context.Response.AddHeader("Content-Type", "application/octet-stream");
                    // 添加头信息,为"文件下载/另存为"对话框指定默认文件名,设定编码为UTF8,防止中文文件名出现乱码
                    context.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(res.Content.Headers.ContentDisposition.FileName, System.Text.Encoding.UTF8));
                    // 添加头信息,指定文件大小,让浏览器能够显示下载进度
                    context.Response.AddHeader("Content-Length", res.Content.Headers.ContentLength.ToString());
                    //指定返回的是一个不能被客户端读取的流,必须被下载
                    context.Response.ContentType = "application/vnd.ms-excel";
                    // 把文件流发送到客户端
                    context.Response.BinaryWrite(res.Content.ReadAsByteArrayAsync().Result);
                    // 停止页面的执行
                    context.Response.End();
                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值