如何使用ajax调用打开PDF

Bil*_*ill 1 javascript php ajax jquery

我有一个PHP脚本,可以从服务器下载PDF文件,并提示您打开它或保存它.该脚本接受一次性令牌,用于代替文件名,以隐藏文件名.

如果你去实际的php页面http://example.com/files/download/token脚本工作正常,它下载PDF.

我可以使用标准链接标记将人们发送到该页面,但是一旦文件下载,我需要更新该页面上通过该下载脚本返回的内容.

有没有办法让ajax调用打开一个新窗口,文件将下载,然后返回我需要更新当前页面的数据?

下载脚本还有更多内容,但主要部分是实际的下载部分:

 header("Content-type: application/pdf"); 
 $this->load->helper('file');
 readfile("static/temp_statements/".$local_file_name);
 unlink("static/temp_statements/".$local_file_name);
Run Code Online (Sandbox Code Playgroud)

Mik*_*gan 5

我过去使用的一个可能对你有用的技巧是

  • 在ajax调用中提供查询参数以下载PDF.这将是一个独特的名称.
  • 流式传输PDF以供下载的服务器进程使用此唯一名称设置cookie.
  • 您在页面中轮询等待此cookie出现.
  • 当cookie出现时,您可以假定文件已下载,您可以执行您的临时操作.

而且您无需打开窗口即可实现此目的.你可以像这样附加一个不可见的iframe:

$(some selector).append($("<iframe width='1' height='1' frameborder='0' src='" + url + "'></iframe>"));
Run Code Online (Sandbox Code Playgroud)

为了诚实和透明,我最初从这个SO答案中找到了这个想法并且它对我有用:检测浏览器何时收到文件下载