我的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
...
提前感谢。
答案 0 :(得分:0)
这似乎就像某种路由问题。收集CSV数据的php页面应该是唯一一个调用的页面。但是看起来你正在使用一个框架,或者你可能在某个地方有一个包含,或者你的服务器上有重写。
答案 1 :(得分:0)
好吧,我解决了。我必须在$ handle()之前和第一个header()之前添加ob_end_clean()。完成后,任何缓冲的输出都被清除,csv文件被保存,没有“额外”内容。
谢谢大家花时间试图帮助我。