Javascript 为iPad实现下载servlet

Javascript 为iPad实现下载servlet,javascript,java,servlets,download,anchor,Javascript,Java,Servlets,Download,Anchor,我已经使用java实现了一个downloader servlet,如下所述: 要求是,在浏览器端,文件应自动下载,而不是通过任何锚定单击触发。关于ajax响应,我调用 document.location = "downloadServlet?fileId=foo" 问题是,它适用于所有桌面浏览器、android移动设备。 但当设备是iPad平板电脑时,chrome和safari都不会下载该文件,例如,如果该文件是文本文件,则内容会转储到页面,我的工作页面也会丢失。如何强制下载文件而不显示内容

我已经使用java实现了一个downloader servlet,如下所述:

要求是,在浏览器端,文件应自动下载,而不是通过任何锚定单击触发。关于ajax响应,我调用

document.location = "downloadServlet?fileId=foo"
问题是,它适用于所有桌面浏览器、android移动设备。 但当设备是iPad平板电脑时,chrome和safari都不会下载该文件,例如,如果该文件是文本文件,则内容会转储到页面,我的工作页面也会丢失。如何强制下载文件而不显示内容?即使尝试使用zip文件,平板电脑的浏览器也会显示不同的页面并破坏工作页面。我想要的是浏览器下载它,就像对所有类型的文件执行SaveAs一样

由于document.location更改了iPad上的整个页面,我将其更改为锚定,但由于它应该自动触发,我通过

<a href="downloadServlet?.." target="_blank" rel="noopener" id="downloadAnchor" />

document.getElementById("downloadAnchor").click()

document.getElementById(“downloadAnchor”)。单击()

但是弹出窗口拦截器会阻止单击事件。

在servlet中,尝试设置响应标题内容处置:附件;filename=myfilename.myextHi,我已经添加了,但不适用于iPad,即使将配置设置为附件,当您下载文本文件时,其内容将直接放入初始页面我尝试了所有选项,但iPad+safari始终在当前选项卡上打开内容。由于safari的弹出阻止机制,无法打开新选项卡/窗口。没有帮助,因为文件是动态生成的,我们不确定在单击链接(业务规则)时是否会下载文件。请尝试将内容类型响应头设置为application/octet stream mime typeıtrued application/octet stream,force download,x-download,但ipad始终显示在同一页面中,而不显示saveas。