php - 从 WordPress 下载 mySQL 表作为制表符分隔文件
问题描述
我在 WordPress 表单上有一个按钮,它触发了一个排队脚本,目的是创建一个 mySQL 表提取并将其作为制表符分隔的文件下载到用户的 PC。路由工作正常。我可以从表中提取数据并对其进行格式化。我只是不知道如何使用 PHP Header 和资源指令触发下载。任何帮助,将不胜感激。
代码片段如下:
<?php
function agp_export_csv_table()
{
// =============================================================================
// This function retrieves data from the enquiries table and exports it to a
// tab delimited 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 错误。
解决方案
关闭文件后,您将不得不使用标题。
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;
推荐阅读
- angular - DOM 悬停时有规律的可观察发射
- python-3.x - 在条件下计算列中的值之间说我只需要计算特定值并使用 python pandas 将它们按另一列分组
- c# - 使用 c# / 实体框架将查询从一个实体重定向到另一个实体
- reactjs - 如何在本机反应中实现选择器列表与父值和子值
- html - 删除空白选项但不将初始选项设置为第一个值
- java - 如何使uniqe在实体中归档,但相对多的ToOne实体?
- java - 尝试在redis中保存访问令牌时出现异常
- php - 如何从 WordPress 媒体库中获取特定的图像替代文本?
- reactjs - React JS 通过错误的 props 映射
- angular - 类型 'boolean' 不可分配给类型 'ObservableInput<{}>'