我正在尝试在单击按钮时创建csv文件。我的问题是文件无法下载,它只是将内容回显出来。
这是我的代码
class csv_writer {
public $dataArray;
public $filename;
public $csvHeader;
public function create_csv() {
/**
*
* Creates the CSV and make it ready for download
*/
$fp = fopen('php://output', 'w');
fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF) );
fputcsv($fp, $this->csvHeader, ';',' ');
foreach ( $this->dataArray as $ferow ) {
fputcsv($fp, $ferow,';');
}
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="'.$this->filename.'.csv"');
fclose($fp);} } 我是这样调用这个类的:
$csv = new csv_writer();
$csv->dataArray = array( 'value1', 'value2' );
$csv->filename = 'test';
$csv->csvHeader = array( 'value1', 'value2' );
$csv->create_csv();我已经尝试了堆栈上的所有其他示例,但都没有成功!希望有一个聪明的头脑能帮助我解决问题!
发布于 2015-09-30 17:35:47
您还没有生成任何内容,只生成了文件名。
下面是我不久前写的一段代码片段。
这取决于您来创建输出。
简而言之:首先设置头文件(包括文件名建议)。
然后是内容。
$filenameSuggestion = "database_export_".date("d")."-".date("F")."-".date("Y").".sql";
header("Content-Disposition: attachment; filename=\"".$filenameSuggestion."\"");
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
// Create content HERE, so you need to echo something or create output another way
// .....
exit;我希望这会对你有所帮助。
https://stackoverflow.com/questions/32862429
复制相似问题