使用 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.data.store.load 回调之外的空值

extjs store.load 未填充,可能是根对象问题?

带有 Ext JS 的 MVC 架构中 store.load() 的动态代理 URL

Ext JS 5 关于Store load返回json错误信息或异常的处理

使用 Qt 浏览器下载 excel 文件作为附件