在xml文件下载中,在文件的开头添加了新行

时间:2019-03-06 14:22:21

标签: php xml slim kml

我成功生成了一个可用于Google Earth的xml文件。 当我打开文件时看起来像这样。文件从第1行Xml generated

开始

然后,我为用户生成一个链接以下载文件。文件现在从第2行开始。 File download from the link

我不知道为什么会这样。 这是我用来将文件发送给用户的代码。

     $target_file =  "../files/google.xml";
      $fh = fopen($target_file, 'r');
      $file_stream = new Stream($fh);

    return $response ->withHeader('Content-Type', 'application/xml; charset=utf-8')
                  ->withHeader('Content-Type', 'application/force-download')
                ->withHeader('Content-Type', 'application/download')
                ->withHeader('Content-Description', 'File Transfer')
                ->withHeader('Content-Disposition', 'attachment; filename="' . basename($target_file) . '"')
                ->withHeader('Expires', '0')
                ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
                ->withHeader('Pragma', 'public')
               ->withBody($file_stream);

有人可以指出我为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

文件中<?php标记之前的内容,将输出到浏览器。检查文件开头是否有空格-换行符,BOM标记,Unicode不间断空格,无。对于所有include()d或require()d文件也是如此。