php - 浏览器未从 PHP 脚本下载文件
问题描述
背景:我在网站上有一个表格,用户可以从中选择行,然后单击导出按钮以下载这些行的 .csv。
我正在从前端的表中创建一个数组数组,并通过 AJAX 将该数组传递给一个 PHP 脚本,该脚本使用 fputcsv() 将它们放入 .csv 格式。我能够回显结果,并将结果推送到服务器上的 .csv 文件,并且都可以正确显示。但无论出于何种原因,我都无法让浏览器提供文件供下载。
我参考了很多 stackoverflow 文章,并对 HTTP 标头进行了研究,但似乎没有任何作用。
我的代码粘贴在下面:
<?php
// this is the array of arrays passed via AJAX
$gaps = $_POST["gaps"];
function array_to_csv_download($array, $filename='export.csv', $delimiter=",") {
header("Content-type: text/csv");
header("Cache-Control: no-store, no-cache");
header('Content-Disposition: attachment; filename="'.$filename.'";');
// open the "output" stream
// see http://www.php.net/manual/en/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq
$f = fopen('php://output', 'w');
foreach ($array as $line) {
fputcsv($f, $line, $delimiter);
}
}
array_to_csv_download($gaps, 'gaps.csv');
解决方案
推荐阅读
- css - 如何将 toastr-rails gem 添加到 Rails 6 项目?
- flutter - 如何使用 Dart PDF 包创建自定义页面宽度?
- datatable - page length not showing after adding export option in DataTables Library
- android - 在相机预览中识别文本并在文本上绘制一个矩形
- javascript - 如何在同一个应用程序上下载由 django 应用程序创建的 word 文档
- ubuntu - 更新后 Ubuntu 19.10 卡在徽标闪屏上,恢复模式也无法正常工作
- powershell - 用于更新文本文件参数的批处理/Shell 脚本
- laravel-5 - 如何修复 Laravel 旧值 htmlspecialchars() 期望参数 1 是字符串,给定数组?
- java - 无法为 Junit 方法创建模拟调用
- powershell - Powershell robocopy 日志记录