在Extjs经典框架中,我们使用Ext.form.Panel启动文件下载。在Modern框架中,我无法让Ext.form.Panel做同样的事情。那么,我如何在Modern框架中执行简单的文件下载(可能是大文件)。我宁愿不必更改服务器端代码。
这是我们在Classic中使用的代码
params={};
params.doc_path=rec.get('server_path');
params.doc_link_name=rec.get('name');
var form = Ext.create('Ext.form.Panel', {
standardSubmit: true,
renderTo: Ext.getBody(),
url: '/document/download',
method: 'POST',
timeout: 120
});
// Call the submit to begin the file download.
// Note that neither Success nor Failure are ever called
form.submit({
params: params
});
这是ruby服务器中的服务器端代码
def download
# A small helper to download the file passed in doc_path
send_file params["doc_path"], type: 'application/octet-stream', disposition: 'attachment', filename: params["doc_link_name"]
end
如果我们在Modern中尝试这样做,我们的服务器不会收到正确的url。(我们得到一个路由错误)。在Modern中使用表单上传文件的工作方式与Classic相同,那么为什么文件下载的工作方式不同呢?
有人有关于如何使用Ext.exporter的示例代码吗。从服务器下载文件?我看了文件,刚刚迷路了。无论如何,当我提出Ext.exporter的需求时。文件我得到一个404未找到错误,所以这是不可能的。
1条答案
按热度按时间k2arahey1#
我只需要点击并忘记,所以不需要跟踪成功或失败。
感谢Imagine-breaker在d1c1d中的回答,我实现了此函数:
这样称呼它
服务器端代码保持原样。我可能也会在我们的经典版应用程序中实现这一点——它看起来简单得多。