Zend Framework如何设置标头

Uff*_*ffo 32 php zend-framework

我有一个问题,我该怎么做这样的事情:

header("Content-Disposition: inline; filename=result.pdf"); 
header("Content-type: application/x-pdf"); 
Run Code Online (Sandbox Code Playgroud)

使用Zend Framework,我尝试过:

        $this->getResponse()
        ->setHeader('Content-Disposition:inline', ' filename=result.pdf')
        ->setHeader('Content-type', 'application/x-pdf');
Run Code Online (Sandbox Code Playgroud)

但是无法正常工作.

最好的祝福,

Ste*_*rig 56

您设置响应标头的语句略有不正确:

$this->getResponse()
     ->setHeader('Content-Disposition', 'inline; filename=result.pdf')
     ->setHeader('Content-type', 'application/x-pdf');
Run Code Online (Sandbox Code Playgroud)

以上应该有效 - 请注意Content-Disposition-header中的区别.

顺便说一句...当你想强制下载框(而不是在浏览器中加载文档)时,你应该使用Content-Disposition attachment.

$this->getResponse()
     ->setHeader('Content-Disposition', 'attachment; filename=result.pdf')
     ->setHeader('Content-type', 'application/x-pdf');
Run Code Online (Sandbox Code Playgroud)

根据不同的浏览器有可能,你也必须设置Content-Length或改变Content-type一种组合的一种或多种的(多个头)application/force-download,application/octet-stream和/或application/download.正如我在评论中写的,有时缓存标题可能会干扰您的下载.检查以查看发送的缓存标头.

  • @Uffo:如果你想强行下载,你应该在你的问题中说出来.您只询问设置标题的正确方法是什么,而S. Gehrig的原始回复就是这样. (4认同)

Dav*_*unt 6

在表格的后面,我可以推荐这个动作助手作为一个简单的,可重复使用的组件,用于将文件或内存数据发送到浏览器.

具有缓存,处置和可以使用Apache Sendfile的选项

  • 链接死了; 任何替代品? (3认同)