我需要从服务器下载文件并在客户端上弹出“另存为”框。我无法在Ajax中执行此操作,因此我在客户端JavaScript中创建了一个隐藏的表单,并在单击按钮时在JS中提交表单。服务器获取POST,并将文件作为附件发回,客户端生成“保存”框。
到目前为止,这么好,除了这里有两个问题:
1 - 我希望JS在用户完成下载后删除新创建的表单。我想我可以在DOM中留下一个无用的隐藏形式,但它并不理想。问题是form.submit()
异步执行,所以我不知道何时删除表单 - 我不能简单地执行form.submit()
2 - 有时用户实际上需要下载两个文件。此代码不起作用:
form1.submit(); // download file 1
form2.submit(); // download file 2
客户端只执行/完成其中一个提交 - 例如,我可以通过在两者之间放置alert
来做到这两点,但我需要正确地完成它。
如果我使用Ajax执行此操作,我只是使调用同步,但我找不到使用表单提交的方法。理想情况下,我想要一个属性来使提交同步(类似.setAttribute('async', false)
,这不起作用)。
有什么想法吗?或者使用两个另存为对话框下载两个文件的另一种方法是什么?
答案 0 :(得分:1)
一个很棒的技巧是使用cookie。诀窍就是这样:
至于下载两个文件,我不认为HTTP中有两个附件的规定。您当然可以返回类似zip文件的内容。