PHP打印到浏览器而不是CSV文件

PHP打印到浏览器而不是CSV文件,php,export-to-csv,fputcsv,Php,Export To Csv,Fputcsv,正在尝试使用从数据库导出的内容创建csv文件。这是我使用的代码: if(isset($_POST["Export"])){ header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=data.csv'); $output = fopen("php://output", "w"); fputcsv($output, array('

正在尝试使用从数据库导出的内容创建csv文件。这是我使用的代码:

if(isset($_POST["Export"])){

  header('Content-Type: text/csv; charset=utf-8');  
  header('Content-Disposition: attachment; filename=data.csv');  
  $output = fopen("php://output", "w");  
  fputcsv($output, array('ID', 'Name', 'Email', 'Phone'));  
  $query = "SELECT userID, name, email, phone from user ORDER BY userID DESC";  
  $result = mysql_query($query);  
  while($row = mysql_fetch_assoc($result))  
  {  
       fputcsv($output, $row);  
  }  
  fclose($output);  

当我单击export按钮时,它会在浏览器中加载带有正确结果的PHP页面。但是,我无法将结果存储在文件中。任何帮助都将不胜感激。

尝试使用以下内容类型之一:

header('Content-Type: application/vnd.ms-excel');
header('Content-Type: application/octet-stream');

尝试删除fclose$输出;行。

尝试发送headerContent类型:应用程序/强制下载;就在文件输出之前。

您需要做的就是删除内容处置头并将内容类型头设置为纯文本:


标题的内容类型:文本;字符集=utf-8'

确保您的脚本中没有任何其他打印或回显命令。

现在它只是打开一个空白的PHP页面,在那里有正确的输出。这可能是权限问题吗?这将在服务器端存储文件。当我正确阅读问题时,Matture正在尝试创建一个“下载CSV”链接。这是正确的@PetervanderWal。我想下载客户端的文件。@matture我误解了你的问题。您希望触发输出的文件下载,而不仅仅是将原始文本输出到浏览器。更新了我的答案。这些标题是我在没有utf-8的情况下创建CSV下载的示例,但这应该不是问题。可能的问题:首先验证标头是否发送到浏览器F12,然后是“网络”选项卡,在设置标头之前,可能不需要的输出将破坏标头,并在错误日志中发出警告。第二:尝试引用文件名filename=data.csv,只是为了确保,第三:尝试另一个浏览器来验证这不是一个浏览器错误,你不会是第一个。嘿@PetervanderWal,谢谢你的回复。1.我在预览中看到了包含所有数据库数据的正确标题。2.尝试引用文件名,但不幸的是什么也没有引用。3.在Chrome和Firefox中试用