通过XHR请求下载pdf文件是否完全不可能?
我知道关于这个话题还有很多其他的讨论,但遗憾的是,我仍然对它们不满意。
我正在使用AngularJs并使用其$Http
方法发出请求。它没有返回任何文件下载弹出窗口。但是,如果我在新的浏览器窗口中使用相同的URL,那么我将获得一个弹出窗口。
我已经尝试过work-arround并且工作正常,即document.location.href = url;
但是如果我这样做,那么在下载弹出框准备好并出现之前,我无法显示等待的图像。
所以对我来说工作还不够。我想以真实的方式通过对服务器的请求来实现,通过该请求我也可以处理结果的替代流程。
答案 0 :(得分:10)
看看这个JQuery插件 jquery-file-download-plugin这是此插件demo的演示页面 。我认为它动态插入iframe到DOM并产生外观和感觉就像AJAX请求一样。它可能对你有帮助。
答案 1 :(得分:4)
这当然取决于PDF文件的大小,但如果PDF不太大,这将是一种可行的方法:
显示"等待图像"并使用$http
下载PDF。
$http.get('http://my.example.com/foo.pdf').success(function(pdfData) {
... do something with pdfData ...
});
将pdfData
转换为Base64编码并使用data URI scheme为下载的PDF文件创建网址。