首页 新闻 搜索 专区 学院

输出Excel时,用post提交无法输出文件,用form就可以?

0
悬赏园豆:5 [已解决问题] 解决于 2016-07-31 13:47

用npoi导出Excel时,用的 $.post("@url", params);这种方式导出文件respnose的是乱码,但用form表单的方式却可以输出文件,而我现在却又没办法用form这种方式。求大神指点。以下是输出文件的后台方法。

  public void Export(string fileName)
        {
            var ms = new MemoryStream();
            _workbook.Write(ms);
            var response = HttpContext.Current.Response;
            response.Charset = "UTF-8";
            response.ContentEncoding = Encoding.GetEncoding("UTF-8");
            response.ContentType = "application/octet-stream";
            response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName) + ".xls");
            response.BinaryWrite(ms.ToArray());
            ms.Close();
            ms.Dispose();
            response.Flush();
            response.End();
        }
hardy_Wang的主页 hardy_Wang | 初学一级 | 园豆:53
提问于:2016-06-21 14:32
< >
分享
最佳答案
0

$.post("@url", params);发出的是ajax请求;

例如:$.post("url",{},function(ajaxobj){

  //todo ...  此处 ajaxobj=***.xls文件.

},"json").

所以不行啦.

form表单是OK的.会提示下载文件.

收获园豆:5
ICE_Inspire | 菜鸟二级 |园豆:228 | 2016-06-21 15:10

只能用form么?用form的话代价太大了

hardy_Wang | 园豆:53 (初学一级) | 2016-06-21 15:13

@未找到对象: 你想做到什么效果?

ICE_Inspire | 园豆:228 (菜鸟二级) | 2016-06-21 15:17

@未找到对象: 如果只是想点击下载,就不要用form,用url(target='_blank')传参,服务器Export(string fileName) 处理参数并返回生成的xls.文件,就自动下载文件了.

ICE_Inspire | 园豆:228 (菜鸟二级) | 2016-06-21 15:21

@iceKnight:主要是参数问题,目前传参数是通过js传对象MC后台接收对象的方式过滤数据的,如果用form的话是不能通过这种方式传参的

hardy_Wang | 园豆:53 (初学一级) | 2016-06-21 15:24

@未找到对象: 那你好好理解HTTP协议.就算是js传值,一样可以用form代替.因为 form是原生的.

你可以用fidder等看看js传值的报文. Form是可以做到的.

附:我还是不理解你的需求.

ICE_Inspire | 园豆:228 (菜鸟二级) | 2016-06-21 15:29
其他回答(1)
0

window.location.href='你的Excel文件的路径';

 

ajax成功后会进success。 用ajax也是可以的,会麻烦点。

参考:http://www.cnblogs.com/cdemo/p/5225848.html

小小高 | 园豆:677 (小虾三级) | 2016-06-21 15:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册