文件在下载

时间:2018-02-15 20:11:09

标签: php csv firefox download

我正在使用以下代码生成一个csv文件供下载。

/**@var array $results contains the results of an SQL query**/
$tmpFile = tmpfile(); //Create a temp file to write the csv to
fputcsv($tmpFile, array_keys($results[0])); //Write the column headers

foreach ($results as $result) { //write each row to the file
    fputcsv($tmpFile, $result);
}
rewind($tmpFile); //Rewind the stream
$csv = stream_get_contents($tmpFile); //Get the file as text
fclose($tmpFile); //Done with the temp file.

//Set the download headers
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="testDownload.csv"');
//Output the content
echo $csv;
exit(0);

下载似乎正常启动,但一秒后我在firefox中收到消息,“[文件]无法保存,因为无法读取源文件。”我用chrome / safari进行了测试,得到了类似的结果。我还测试了一些静态内容(不是来自数据库)但没有成功。

在开发人员控制台中,我可以检查网络请求并看到它返回状态200,如果我检查响应,我会看到完整的文件。我甚至可以将其复制/粘贴到文本文件中,然后在excel中打开它。

此外,如果我注释掉header()行,则文件内容会在浏览器中显示而不会出现问题。

内容只有~2500行,没有特殊字符。

0 个答案:

没有答案