Javascript 使用jquery下载PDF
类似于,但在这里似乎不起作用 我需要向服务器发送一个请求,有效负载为名称/值对。服务器通过发送PDF文件进行响应 用户需要知道的是,单击页面上的pdf按钮后,他们会得到浏览器默认行为(即保存或查看) 所以,这个电话很简单(我想) 这就是服务器需要完成的所有工作并返回output.pdf 看起来它工作得很好。以下是响应标题:Javascript 使用jquery下载PDF,javascript,jquery,ajax,Javascript,Jquery,Ajax,类似于,但在这里似乎不起作用 我需要向服务器发送一个请求,有效负载为名称/值对。服务器通过发送PDF文件进行响应 用户需要知道的是,单击页面上的pdf按钮后,他们会得到浏览器默认行为(即保存或查看) 所以,这个电话很简单(我想) 这就是服务器需要完成的所有工作并返回output.pdf 看起来它工作得很好。以下是响应标题: Connection:keep-alive Content-Disposition:attachment; filename="output.pdf" Content-Len
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)什么也没做,我想我错过了“现在将此响应作为可下载文件处理”这句话,这是我第一次回答自己的问题,所以,接下来 这里有一个关于这个主题的JQuery论坛帖子 这似乎不起作用,而且永远不会起作用的原因是,这些标题永远不会以浏览器可以响应的方式到达浏览器-AJAX结果会在没有浏览器干预的情况下传递给调用脚本 真的很有道理 仍然对是否有人有更好的解决方案感兴趣,但到目前为止,我正在使用JQuery在运行时生成一个隐藏表单,然后启动一个.submit()
这很有效。如果您想保存/打开文件,您可以选择使用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;
然后,调用download.php:
<a href="download.php?fname=sample.pdf">Sample file</a>
此代码可用于下载任何文件类型
注意:始终注意路径和权限问题
希望它有用
干杯,您想通过点击按钮下载pdf吗?在这里,你可以使用HTML5,只需设置锚定标签
a
,url为pdf位置,并添加属性download
,谢谢Satinder,但这不处理有效负载数据,我还有一两个IE8用户
<a href="download.php?fname=sample.pdf">Sample file</a>