0

我有一个 php 文件,它将表单数据转换为 csv 格式,然后它应该自动下载到用户的本地下载文件夹。

$time = time();
$filename = 'exceldownloads/myreport_'.$time.'.csv';
$file = fopen($filename,'w');
fputcsv($file,$rowexcel);

上面的代码工作正常,并将 csv 文件存储在服务器的指定文件夹中。但我的要求是将其下载到本地文件夹。我已经看到了上述问题的许多解决方案,但只有在我们知道本地目标文件夹的情况下它们才有效。但是,我的要求是使其可下载到最终用户本地下载的文件夹(我不知道其下载位置)。无论如何都可以将其下载到最终用户系统而不具体提及目标路径。

4

1 回答 1

2

您可以将网页的输出导出为附件,该附件将作为下载内容显示给用户。您可以通过在向用户进行任何输出之前输出适当的标题来做到这一点。

下面是一个示例,它创建了一个名为 foo.csv 的 CSV 文件的下载:

header("Content-type: text/csv");
header("Content-Disposition: attachment;Filename=foo.csv");

输出标题后,您只需将文件的所有数据输出到页面内容。

*编辑:*这是一个工作片段,根据要求:

header("Content-type: text/csv");
header("Content-Disposition: attachment;Filename=foo.csv");
echo implode(";", $rowexcel) . "\r\n";  // you should expand this accordingly

或者,这是另一个片段,基于您的代码:

$filename = 'myreport'.time().'.csv';
$f = fopen($filename,'w');
fputcsv($f,$rowexcel);
header('Content-type: application/csv');
header('Content-Disposition: attachment;filename="'.$filename.'"');
readfile($filename);

如果您没有下载任何内容,请确保在 header() 调用之前不输出任何内容。此外,请确保您的 PHP 文件开头没有任何 UTF8 BOM 字节,因为这些字节可能会被误解为输出

于 2013-10-30T17:29:20.310 回答