Php CSV下载到Chrome-错误:MIME类型文本/CSV

Php CSV下载到Chrome-错误:MIME类型文本/CSV,php,google-chrome,csv,mime-types,Php,Google Chrome,Csv,Mime Types,我使用jQuery识别点击按钮,然后启动对文件的调用: window.location.href = "url"; 该文件查询数据库,返回结果,然后将其写入CSV文件。我设置了以下标题: header('Content-Type: text/csv;'); header('Content-Disposition: attachment; filename=data.csv'); 这适用于除Chrome之外的所有浏览器,Chrome在控制台日志“资源解释为文档,但使用MIME类型text/cs

我使用jQuery识别点击按钮,然后启动对文件的调用:

window.location.href = "url";
该文件查询数据库,返回结果,然后将其写入CSV文件。我设置了以下标题:

header('Content-Type: text/csv;');
header('Content-Disposition: attachment; filename=data.csv');
这适用于除Chrome之外的所有浏览器,Chrome在控制台日志“资源解释为文档,但使用MIME类型text/csv传输”中返回以下错误:“url”

奇怪的是,如果我直接调用该文件,它可以在所有浏览器中运行

代码:

$fp=fopen('php://output","w",;
标题('Content-Type:text/csv;');
标题('Content-Disposition:attachment;filename=data.csv');
标题(“到期日:0”);
标头(“缓存控制:专用”);
//字段标题
$ncols=oci_num_字段($stid);
$headers_row=array();
对于($i=1;$i标题(“内容类型:应用程序/强制下载”);

标题(“过期:0”)


标题(“缓存控制:私有”);

我也遇到了同样的问题,但chrome将其显示为警告而不是错误。我通过将标题更改为
'Content-Type','text/plain',
来阻止警告显示。
非常恼人的是,这个问题在op.发布6年后仍然存在。

试试应用程序内容类型

标题(“内容类型:应用程序/八位字节流”)

用户还可以公开访问,以便用户可以下载

标题(“Pragma:public”)

尝试生成的文件的readfile(),并添加标题“content length”。
如果有效,您可能需要先写入文件,然后再输出。

您在查询部分使用的是会话变量吗?@KasparMary否,它使用GET。chrome不允许下载吗?在chrome中,这是一个警告,不是一个错误。不确定如何修复它,但我仍然可以下载我的文件。三年后,这仍然是一个有效版本问题。Chrome仍然给出这个警告。我在使用window.location.replace(url)时得到它单击按钮重定向到csv文件。在我的情况下,后端是.NET。像@DonRhummy一样,我刚在开发人员控制台中记录了一个警告,但是文件下载很好。如果你真的想保存文件,我觉得重定向到文件是有问题的。你尝试了吗?我现在遇到了这个错误:资源被解释为文档,但传输红色带MIME类型应用程序/强制下载:“ur”设置标题后接下来要做什么?查询数据库时,我将标题设置在文件的顶部。更好的方法是在发送标题之前进行查询。您可能会遇到错误,因此只有在一切正常后才能控制它并发送标题。另外,您忘了打印数据吗?好的,我在输出之前将其移动到了CSV,但仍然给出相同的错误。
try {
    $conn = new PDO("mysql:host=$servername;dbname=db_1", $username, $password);
    //set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo "Connected successfully"; 
    }
catch(PDOException $e)
    {
      echo "Connection failed: " . $e->getMessage();
    }


$query = $conn->prepare("SELECT * FROM csv_filds order by id asc");
$query->execute();
$data = "";
 while($row=$query->fetch(PDO::FETCH_BOTH)){ 
  $data .= $row['id'].",".$row['Name'].",".$row['father_name'].",".$row['address']."\n";
}
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="csvfile.csv"');
echo $data; exit();
try {
    $conn = new PDO("mysql:host=$servername;dbname=db_1", $username, $password);
    //set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo "Connected successfully"; 
    }
catch(PDOException $e)
    {
      echo "Connection failed: " . $e->getMessage();
    }


$query = $conn->prepare("SELECT * FROM csv_filds order by id asc");
$query->execute();
$data = "";
 while($row=$query->fetch(PDO::FETCH_BOTH)){ 
  $data .= $row['id'].",".$row['Name'].",".$row['father_name'].",".$row['address']."\n";
}
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="csvfile.csv"');
echo $data; exit();