2014-02-16 101 views
0

我在php中实现了一个基本的mvc框架。问题是,当我想创建一个动态的kml文件未打开时,因为会生成空格开头的文件。如果我从任何文件(而不是框架)执行它,它会正常工作。PHP MVC框架+生成KML文件

链接:本地主机/收音机/索引/资产

控制器:indexController.php 方法:资产()

代码:

public function asset() { 

    $dom = new DOMDocument('1.0', 'UTF-8'); 



    $kmlOutput = $dom->saveXML(); 
    $kmlOutput = trim($kmlOutput);    
    header('Content-type: application/vnd.google-earth.kml+xml'); 
    header('Content-disposition: attachment; filename="myfilename.kml"'); 
    echo $kmlOutput; 

} 

误差在谷歌地球:

error

KML生成:预先

enter image description here

感谢。

回答

0

输出开始处的空白通常是由关闭php tag后面的换行符引起的。

<?php¶ 
¶ 
// Some code here¶ 
¶ 
?>¶ 
¶ 

<?php ?>以外的任何内容,直接视为输出。因此,你不应该在库文件中使用结束标签。

quote Zend Framework

对于只包含PHP代码的文件,结束标志( “?>”)是绝不允许 。它不是PHP所要求的,并且忽略它可以防止 将意外的空白空间注入到响应中。

+0

是的,你说得对。谢谢你的帮助。你每天都会学到新的东西。显示文档后,我发现了另一个像我这样的人的解决方案:ob_clean(); – JohnPortella