通过XHR请求下载PDF文件

时间:2013-11-28 07:32:56

标签: javascript jquery html angularjs xmlhttprequest

通过XHR请求下载pdf文件是否完全不可能? 我知道关于这个话题还有很多其他的讨论,但遗憾的是,我仍然对它们不满意。 我正在使用AngularJs并使用其$Http方法发出请求。它没有返回任何文件下载弹出窗口。但是,如果我在新的浏览器窗口中使用相同的URL,那么我将获得一个弹出窗口。 我已经尝试过work-arround并且工作正常,即document.location.href = url;但是如果我这样做,那么在下载弹出框准备好并出现之前,我无法显示等待的图像。 所以对我来说工作还不够。我想以真实的方式通过对服务器的请求来实现,通过该请求我也可以处理结果的替代流程。

2 个答案:

答案 0 :(得分:10)

看看这个JQuery插件 jquery-file-download-plugin这是此插件demo的演示页面 。我认为它动态插入iframe到DOM并产生外观和感觉就像AJAX请求一样。它可能对你有帮助。

答案 1 :(得分:4)

这当然取决于PDF文件的大小,但如果PDF不太大,这将是一种可行的方法:

  1. 显示"等待图像"并使用$http下载PDF。

    $http.get('http://my.example.com/foo.pdf').success(function(pdfData) {
      ... do something with pdfData ...
    });
    
  2. pdfData转换为Base64编码并使用data URI scheme为下载的PDF文件创建网址。

  3. 重定向到该网址。