使用Zend Framework,我想发送一个文件。 但是当我从我的控制器这样做时,我注意到已经发送了一个LineFeed:
以下代码:
$data = 'Let me test this';
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="output.txt";' );
//header('Content-Length: '.strlen($data));
ob_clean(); flush();
die($data);
会给我output.txt文件:
[LF]
Let me test this
我有一个preDispatch插件,但我在退出之前尝试使用测试代码,并且还没有输出LF。所有控制器文件都以<?php
开头。先没有任何LF。
所以,我的问题是:
答案 0 :(得分:2)
我在preDispatch()
派生的插件中使用空Zend_Controller_Plugin_Abstract
方法测试了您的代码,并且输出中没有任何LF。但是,如果我将echo "\n"
明确添加到preDispatch()
方法正文中,我确实会得到它。
所以,很有可能你的插件正在其他地方输出LF。也许你在插件中使用了结束标记? (只是为了放弃可能性)。
对于仅包含PHP代码的文件,结束标记(“?&gt;”)永远不会 允许的。它不是PHP所要求的,省略它会阻止它 意外地将尾随的白色空间注入响应中。