【问题标题】:PDF file download through XHR Request通过 XHR 请求下载 PDF 文件
【发布时间】:2013-12-14 03:24:49
【问题描述】:

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

【问题讨论】:

  • 总之你想使用ajax请求下载pdf文件吗?
  • 是的,但是以 angular.js 或 jQuery 方式...这样我就可以处理所有替代流程。喜欢加载图片...

标签: javascript jquery html angularjs xmlhttprequest


【解决方案1】:

看看这个 JQuery 插件 jquery-file-download-plugin 这是这个插件的演示页面demo .我认为它将 iframe 动态插入到 DOM 并产生类似于 AJAX 请求的外观。可能对你有帮助。

【讨论】:

  • 它对我有用,我需要在服务器端的 http 响应中添加一个 cookie...谢谢。
【解决方案2】:

这当然取决于 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文件创建一个URL。

  3. 重定向到该 URL。

【讨论】:

  • 如何将此 pdfData 转换为 base 64... 我正在使用 btoa 函数,但它显示一些错误...
  • 短寿命小型pdf的完美解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多