PHP - 当浏览器保存csv文件时,csv的内容在csv文件的开头附加html页面

时间:2014-03-25 13:46:20

标签: php csv

我的php代码将.csv文件保存在服务器上。当我直接从服务器获取.csv文件时,它的内容很好,我可以在Excel中查看它。但是在我的网页中,当我点击保存文件时,我计算机上保存的内容会带来html文件的内容,然后是csv文件的内容。可能有什么不对?

以下是我遇到问题的代码:

while ($row = oci_fetch_array($my_query, OCI_ASSOC+OCI_RETURN_NULLS))
{       
    //store content in csv format into $mymessage
}

$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file);
fwrite($handle, $mymessage);
fclose($handle);

header("Content-type: application/x-file-to-save");
header("Content-Disposition: attachment; filename=$my_file");
readfile("$my_file");
exit;

=============================================== =============

以下是内容的样子:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252">
<title>ABCDEF...</title>
</head>
<body>
<font size="4" color=blue><a><b><i><u>12345678</u></i></b></a></font>
<br></br>
...

CSV REPORT EXTRACTED AS OF, 2014/03/25 08:18:16

SERVER,APP-SERVER
server1,weblogic
server2,jboss
server3,weblogic
server4,weblogic
server5,websphere
...

提前感谢。

2 个答案:

答案 0 :(得分:0)

这似乎就像某种路由问题。收集CSV数据的php页面应该是唯一一个调用的页面。但是看起来你正在使用一个框架,或者你可能在某个地方有一个包含,或者你的服务器上有重写。

答案 1 :(得分:0)

好吧,我解决了。我必须在$ handle()之前和第一个header()之前添加ob_end_clean()。完成后,任何缓冲的输出都被清除,csv文件被保存,没有“额外”内容。

谢谢大家花时间试图帮助我。