使用 jquery 下载 PDF
Download PDF with jquery
类似于POST到服务器,接收PDF,交付给用户w/jQuery但这似乎在这里不起作用...
我需要向服务器发布请求,有效负载为名称/值对。服务器通过发送 PDF 文件进行响应
用户需要知道的是,在单击页面上的pdf按钮后,他们会得到浏览器默认行为(即保存或查看)的任何内容。
所以,电话很简单(我认为)
$.ajax({
url:"http://blah.com/etc",
data:{filename:'output.pdf', foo:'foo', bar:'bar', baz:'baz'},
type:"POST"
});
这就是服务器完成其工作并返回输出所需的全部内容.pdf
看起来它工作正常。以下是响应标头:
Connection:keep-alive
Content-Disposition:attachment; filename="output.pdf"
Content-Length:17896
Content-Type:application/pdf
Date:Thu, 03 Oct 2013 04:19:06 GMT
Server:nginx
而且,如果我查看 Chrome 开发工具中的响应,它对我来说确实看起来像一个 17k 的 pdf......
最后一个障碍是浏览器(Chrome 或 FF)什么都不做,我想我错过了"现在将此响应作为可下载文件处理"的位
如果你想保存/打开文件,你可以使用php。见下文:
首先,使文件名"download.php"包含以下代码:
$filename = $_GET['fname'];
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false); // required for certain browsers
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'. basename($filename) . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filename));
readfile($filename);
$fp=fopen($filename,"rb");
if(!feof($fp)){
print(fread($fp,1024*8));
flush();
ob_flush();
if(connection_aborted){
}
}else{
echo 'File has been downloaded.';
}
exit;
然后,调用您的下载.php:
<a href="download.php?fname=sample.pdf">Sample file</a>
此代码可用于下载任何文件类型。
附言始终小心路径和权限问题。
希望有用...
干杯
我第一次回答我自己的问题,所以,这里是...
这里有一个关于这个主题的JQuery论坛帖子 http://forum.jquery.com/topic/download-file-from-jquery-post
这似乎不起作用并且永远不会起作用的原因是这些标头永远不会以浏览器可以响应的方式到达浏览器 - AJAX 结果在没有浏览器干预的情况下传递到调用脚本。
真的很有道理。
仍然对有人有更好的解决方案感兴趣,但截至目前,我正在使用 JQuery 在运行时生成一个隐藏表单,然后触发 .submit()
这是有效的。
相关文章:
- 如何使用javascript或html下载PDF格式的填写表单
- 在提交时打开thankyou.html+下载PDF
- 如何在不在本地下载的情况下将url中提供的文件(pdf/doc)转换为json/string/base64格式
- 下载HTML5/Javascript MOBILE应用程序中的PDF文件
- 下载所选语言的pdf文件
- CSV、PDF、Excel文件在dataTables的导出扩展中作为blob下载
- 如何在网络上下载pdf
- 使用window.print内容以pdf格式下载网页
- 将数据库中的数据转换为可下载的PDF文件
- 如何使用HtmlUnit下载PDF文件
- 如何使用JQuery禁用pdf文件下载选项
- 使用javascript压缩并下载多个PDF文档
- 如何创建和下载PDF和docx格式的文件,该文件将从AngularJS中的表中的数据创建
- 下载pdf格式不正确
- 将屏幕截图显示为pdf下载链接
- 如何通过ajax调用将pdf下载到nodejs服务器
- jsPDF输出PDF下载
- 自动为PDF下载添加唯一编号
- 当点击按钮时,强制PDF下载
- Laravel快速推送PDF下载