【发布时间】:2025-11-28 22:55:02
【问题描述】:
所以我有 ExtJS 应用程序,其中 Combo 中的某个打开导致文件下载(阅读:导出为 PDF)。现在,我们现在使用window.open 来执行此操作,其中我们点击了一个特定的 URL,该 URL 本质上是 RESTful 并且类似于。
window.open('https://example.com/myapp/api/module/someId/exportPDF.pdf?clientId=bizzare123¶m1=someValue');
这会打开新标签,然后我可以下载文件。现在这在理论上是一个 GET 请求(尽管它没有出现在 Chrome DevTools 的网络选项卡中),我想将一些 JSON 数据作为请求正文传递(数据很大,所以我无法将其放入请求参数中)。
这可以通过使用Ext.Ajax.request 调用相同的URL 并传递jsonData 来完成吗? (我相信我必须在success回调中处理响应中的文件。
谢谢!
附:我在 ExtJS 4.0 上
更新
之前我们只有 GET 请求来下载文件,但为了支持新功能,我们必须通过先发送 POST 请求来自定义下载,然后 API 直接发送文件以响应 POST 请求。
但正如 rixo 在 cmets 中提到的那样,可能无法直接异步下载文件,我必须更改 API 以便它在 POST 请求中发送文件 URL,然后我可以点击该 URL 并启动文件下载.鉴于它是影响数百万主要使用 IE 的用户的大型企业网络应用程序,我想避免使用现代 API(这显然很诱人,但在 IE 上不受支持,就像往常一样)。
【问题讨论】:
-
一些代理/防火墙丢弃 GET 请求的主体,一些 HTTP 服务器完全拒绝此类请求。我不会依赖那个。如果您不能依赖XHR level 2 和File API,那么您将无法使用 AJAX 下载文件。 Ext 还没有为你包装这个...
标签: javascript rest extjs download