【问题标题】:CSV file is not downloading using codeigniterCSV 文件未使用 codeigniter 下载
【发布时间】:2022-01-09 03:19:47
【问题描述】:

我正在尝试在 CSV 文件中导出少量数据。尽管文件已成功下载并存储在特定路径中。如果我从浏览器打开下载的文件,文件显示空结果我不知道我在哪里出错,请帮助我

我的控制器

public function export_webdata($p_id,$inptid){
    $project = $this->Lead_Model->get_project_single($p_id);
    $filename = $project[0]->p_name.'_WebsiteInfo_'.time().'.csv';
    $path = getcwd().'/public/files/'.$project[0]->p_name.'/';
    if (!file_exists($path)){
        mkdir($path, 0777, true);
    }
    
    header('Content-Type: text/csv; charset=utf-8');  
    header('Content-Disposition: attachment; filename="'.$filename.'";'); 
    
    $output = fopen($path.$filename, 'w');
    $header = array("Company","Country","Website");
    fputcsv($output, $header);
    $extdata = $this->Lead_Model->webdata_export($inptid);
    
    foreach ($extdata as $key=>$line){
        fputcsv($output,$line);
    }
    fclose($output);
}

我的模特

public function webdata_export($inptid)
{
    $response = array();
    $db5 = $this->load->database('output_db', TRUE);
    $q = $db5->select('Company,Country,Website')->get_where('website_info', ['input_id' => $inptid, 'type_id' => 2,'uploaded_by' => $this->session->admin_id]);
    $response = $q->result_array();
    return $response;  
}

【问题讨论】:

  • 您尝试过什么来解决问题?你被困在哪里了?我没有看到任何 下载 任何内容的代码 - export_webdata 中的部分仅打印这些标头,并将文件写入服务器
  • 还是这个? stackoverflow.com/questions/20840274/…(注意fopen中使用的路径!)
  • 您是否检查过上面发布的任何其他链接?
  • @Nico Haase - 我检查了你的第二个链接,现在工作正常,非常感谢

标签: php codeigniter-3


【解决方案1】:

您需要在标头之前或之后添加以下代码来清理缓冲区

 header('Content-Type: text/csv; charset=utf-8');  
 header('Content-Disposition: attachment; filename="'.$filename.'";'); 
 while ( ob_get_level() ) {
  ob_end_clean();
}

【讨论】:

  • 请分享更多细节,以便其他人可以从您的回答中学习。你改变了什么,为什么?
  • @Nico Haase 当我点击导出按钮时,将从浏览器下载空白 CSV 文件,我不知道我需要在哪里添加下载代码,就像你提到的那样
  • @Vijay Maurya 我尝试使用您的代码,但仍在下载空白文件
猜你喜欢
  • 2014-07-09
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 2011-02-21
  • 1970-01-01
  • 2020-10-28
相关资源
最近更新 更多