我尝试做什么:
我的代码:
$sql = 'SELECT ID,XML FROM table WHERE ID = ?';
//Connect here
$result = $db->prepare($sql);
$result->bind_param('i', $_GET['download_xml']);
$result->execute();
$result->bind_result($ID, $file);
$result->fetch();
header("Content-type: text/xml");
header("Content-Disposition: attachment; filename=test_".$ID.".xml");
print($file);
它为我提供了文件,但XML-Checker告诉我<xml
前面有字符。如果我在记事本中打开文件,<xml
。
当我使用file_put_contents()
保存数据时,它工作正常,我得到了格式良好的XML文件。
答案 0 :(得分:0)
确保在打开php标记之前没有额外的字符。
下载文件时可能会出现问题,因为开头标记前面有“空格”。
<?php ....
这看起来相同但会起作用,因为标签前面没有字符。
<?php ...
网络服务器在php输出之前发送那些额外的字符,这将破坏文件。
答案 1 :(得分:0)
问题是,该文件编码为带有BOM的UTF-8。将其更改为没有BOM的UTF-8 就可以了。