使用 store.load 下载文件(Excel 文件)? (ExtJS 4.1)
Posted
技术标签:
【中文标题】使用 store.load 下载文件(Excel 文件)? (ExtJS 4.1)【英文标题】:Downloading a file (Excel file) with store.load? (ExtJS 4.1) 【发布时间】:2012-06-28 08:24:17 【问题描述】:我需要使用窗口中的按钮从网格中下载文件。为了发送过滤器参数,我使用 store.load 但它不会下载文件,但会尝试读取它。有什么解决办法吗?
store.load(
params:
startExel: parseInt(Ext.getCmp('startE').getValue())
);
startExel 是一个额外的参数,用于指示我要下载 Excel 文件。
【问题讨论】:
excel文件是脚本生成的还是服务器上的实际文件?您可以在网格单元格中的数据周围包裹一个 标记,并将 href 指向文件或脚本 @gunnx,Excel 文件是使用 extjs 发送的参数在服务器端生成的。 你为什么要使用 store.load 你能不能只使用 Ext.ajax 而不是传递所需的参数。 不知道如何获取参数。它们太多了,有些出现有时,有些则没有。另外,它们是 JSON enceded。我正在寻找一个简单的解决方案。 【参考方案1】:我认为通过简单的配置更改不可能做到这一点。因为商店是通过 AJAX 调用加载的。
这是给你的一个想法:
返回一个带有文件下载 url 的 JSON
对象作为存储加载请求的响应。不是实际的文件内容。
success = false, url='...'
在客户端处理存储加载失败,然后识别并提取返回的 url。您可能需要稍微调整阅读器配置。
致电window.open(url)
启动文件下载。
查看来自 SO 的 question。
【讨论】:
【参考方案2】:在服务器端返回文件时包含以下标头:
Content-disposition: attachment
【讨论】:
我用phpexcel.codeplex.com 我觉得跟请求本身有关。 它有Content-Disposition: attachment;filename="01simple.xlsx"
以上是关于使用 store.load 下载文件(Excel 文件)? (ExtJS 4.1)的主要内容,如果未能解决你的问题,请参考以下文章
store.load 后的 Extjs 网格选择有不正确的数据
extjs store.load 未填充,可能是根对象问题?
带有 Ext JS 的 MVC 架构中 store.load() 的动态代理 URL