ajax处理文件下载

ajax中处理文件下载,可能大数会遇到我和一样的问题,什么问题呢?就是下载程序执行了,但是浏览器没有任何下载操作,这是为什么呢?

那是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png、文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序。

string _path = @"f:/myMergeCell.xls";
FileStream fileStream = new FileStream(_path, FileMode.Open);
int fileContent = (int)fileStream.Length;
byte[] byData = new byte[fileContent];
fileStream.Read(byData, 0, fileContent);
fileStream.Close();
context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.xls", "测试表格_myMergeCell"));
context.Response.BinaryWrite(byData);
context.Response.Flush();
context.Response.End();

这是正常的下载文件代码,如果直接在页面cs文件写此段代码,肯定是能下载的。但是在ajax就会出现代码执行了,但是浏览器没有任何效果。

那么该怎么解决呢?

就是在调用的地方不用使用ajax方式调用,原因在上面已说明:

解决方案一:可以使用jquery创建表单并提交实现文件下载

解决方案二:也可以直接使用a标签实现文件下载

转载于:https://www.cnblogs.com/become/p/5976423.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值