所有,

我有一个用Zend Framework和MVC编写的PHP5应用程序。在我的主页上,我希望合并该功能以下载动态生成的pdf文件。完成的方式是:


用户单击“下载文件”链接。
在Click上,PHP控制器进行AJAX调用,该调用将获取表单数据,生成pdf并将其作为字符串返回。
我的javascript函数现在有了pdf字符串。
如何显示用户“打开/保存”对话框以从javascript下载pdf文件?


我有以下代码:

<script type="text/Javascript">
   $('#dlcontent').click(function(e) {
      $.ajax({
                type: 'POST',
                url: "/downloads/dlpolicies",
                data:  $("#frmMyContent").serialize(),
                cache: false,
                dataType: "html",
                success: function(html_input){
                    alert(html_input);  // This has the pdf file in a string.
                    //ToDo: Open/Save pdf file dialog using this string..
                }
            });
});
</script>


谢谢

最佳答案

我会尽量保持简单。只需用target="_blank"汇总表单,然后让PHP强制下载文件。

HTML代码

<script type="text/Javascript">
$('#dlcontent').click(function(e) {
  e.preventDefault();
  $("#frmMyContent").submit();
});
</script>

<form id="formMyContent" action="/downloads/dlpolicies" target="_blank" ... >
...
</form>


然后,在服务器端,您需要告诉PHP将响应作为“下载”发送。

PHP代码

$this->getResponse()
  ->setHeader('Content-Disposition', 'attachment; filename=result.pdf')
  ->setHeader('Content-type', 'application/pdf');


从这里得到这个:
Zend Framework how to set headers

10-04 22:29
查看更多