【问题标题】:Problems with putcsv and force-downloadputcsv 和强制下载的问题
【发布时间】:2015-12-28 00:33:16
【问题描述】:

我正在尝试在单击按钮时创建一个 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();

我已经在堆栈上尝试了所有其他示例,但没有运气!希望有一个聪明的头脑可以帮助我!

【问题讨论】:

    标签: php csv download


    【解决方案1】:

    您没有制作任何内容,只有文件名。

    下面是我前段时间写的coden-p。

    由您来创建输出。

    简而言之:首先设置标题(包括文件名建议)。

    然后是内容。

    $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;
    

    希望对你有所帮助。

    【讨论】:

    • 谢谢回复!我相信我创造了内容。我在 fputcsv 中创建内容。并在 foreach 循环中。调用类时设置数组中的数据。我现在在创建内容之前已经移动了标题,但没有运气。
    • 但是你在哪里创建任何输出?我希望您实际上会使用文件中的数据来回显它。例如通过 readfile php.net/manual/en/function.readfile.php 更正:您使用的是 php://output。我不熟悉那个。您可以尝试使用常规文件,看看是否有效?
    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多