在wordpress woocommerce安装中,我需要将一些自定义订单字段导出到csv文件。一切正常,只有我没有在下载的文件中获得正确的内容。php数组到csv不适用于下载文件
这里是我的代码:
function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") {
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="'.$filename.'"');
$output = fopen(get_temp_dir() . $filename, 'w');
foreach ($array as $line) {
fputcsv($output, $line);
}
fclose($output);
}
数组是一样的东西
$array = array(
array('Head1', 'Head2', 'Head3', 'Head4'),
array('Data1', 'Data2', 'Data3', 'Data4'),
array('Data5', 'Data6', 'Data7', 'Data8')
);
该功能位于自定义管理页面上,由一个提交按钮触发。
当我按下按钮时,会生成一个csv文件并写入临时文件夹,名为$ filename。该文件正常工作。
由函数中的第二个标头条目强制自动下载的文件名称正确($ filename),但内容是该自定义管理页面的源代码。
我不需要将该文件存储在临时文件夹中,直到自动下载工作为止。我试图把'php:// temp'或'php:// output'放在fopen函数中,但是这并没有改变下载文件的内容。
我缺少什么?
那么你在下载的文件中得到了什么内容? –
[如何从php脚本创建并下载csv文件?](http://stackoverflow.com/questions/16251625/how-to-create-and-download-a-csv-file-from-php -script) – Ima
在你提供的函数中你没有显示任何输出。你只是发送标题,就好像你要发送输出,然后写入文件并关闭它。你永远不会发送任何数据。你能显示输出数据的代码吗?或者,只需使用'readfile(get_temp_dir()。$ filename)'按照fclose();'将内容输出到浏览器。 – Kalkran