我在WordPress表单上有一个按钮,该按钮触发排队的脚本,目的是创建和下载mySQL表摘录作为制表符分隔的文件到用户的PC。路由工作正常。我可以从表中提取数据并将其格式化。我只是无法确定如何使用PHP标头和资源指令来触发下载。任何帮助,将不胜感激。
代码段如下:
<?php
function agp_export_csv_table()
{
// =============================================================================
// This function retrieves data from the enquiries table and exports it to a
// tab delimitted excel file
// =============================================================================
global $wpdb, $bp;
$query = "SELECT * FROM {$wpdb->prefix}ppl_enquiries";
$results = $wpdb->get_results($query, ARRAY_A);
$filename = "Export_excel.xls";
header("Content-Disposition: attachment; filename=" . $filename);
header("Content-Type: application/vnd.ms-excel");
header("Content-Length: " . filesize($filename));
$file = fopen($filename, 'w');
$blnHeaderDone = false;
if (!empty($results)) {
foreach ($results as $row) {
if (!$blnHeaderDone) {
fwrite($file, implode("\t", array_keys($row)) . "\r\n");
$blnHeaderDone = true;
}
fwrite($file, implode("\t", array_values($row)) . "\r\n");
}
}
fclose($file);
exit();
}
?>
我的期望是,这应该会触发用户浏览器中的下载对话,但我什么也没回来,而且我看不到在服务器端或本地PC上都生成了任何输出。我没有看到任何PHP或javascript错误。
答案 0 :(得分:0)
关闭文件后,您将不得不使用标题。
fclose($fp);
header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\"");
header("Content-Type: application/text");
header("Content-Length: " . filesize($filename));
readfile($filename);
header("Connection: close");
exit;