【问题标题】:Downloading a file (Excel file) with store.load? (ExtJS 4.1)使用 store.load 下载文件(Excel 文件)? (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。我正在寻找一个简单的解决方案。

标签: javascript ajax extjs extjs4 extjs4.1


【解决方案1】:

我认为通过简单的配置更改不可能做到这一点。因为商店是通过 AJAX 调用加载的。

这是给你的一个想法:

  1. 返回一个带有文件下载 url 的 JSON 对象作为存储加载请求的响应。不是实际的文件内容。

    { success = false, url='...'}

  2. 在客户端处理存储加载失败,然后识别并提取返回的 url。您可能需要稍微调整阅读器配置。

  3. 致电window.open(url) 启动文件下载。

查看来自 SO 的 question

【讨论】:

    【解决方案2】:

    在服务器端返回文件时包含以下标头:

    Content-disposition: attachment
    

    【讨论】:

    • 我用phpexcel.codeplex.com 我觉得跟请求本身有关。
    • 它有Content-Disposition: attachment;filename="01simple.xlsx"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多