Теперь файл CSV экспортируется в отчеты папка. Вместо этого я хочу, чтобы браузер спросил, куда экспортировать файл. так что я могу экспортировать файл в желаемое место клиентского компьютера и избежать хранения этих файлов на сервере (т.е.отчеты папка.
$this->load->dbutil();
$this->load->helper('file');
$this->load->helper('download');
$selProducts= $this->db->query("SELECT * FROM tablename");
$data= $this->dbutil->csv_from_result($selProducts);
$randomidgenerated = "reports/".date('Y-m-d').".csv";
if(file_exists(FCPATH.$randomidgenerated)){
$randomidgenerated = "reports/".date('Y-m-d')."_".random_string('alnum', 3).".csv";
}
if ( ! write_file($randomidgenerated, $data))
{
echo 'Unable to write the file';
}
$data = file_get_contents($randomidgenerated);
force_download($randomidgenerated, $data, TRUE);
из того, что я вижу, вы просто создаете содержимое файла для динамической загрузки … Теперь вам нужно заставить браузер загрузить файл в выбранную клиентом часть, а затем, вероятно, удалить временный файл, если вы этого не сделаете. хотите сохранить его на сервере … Добавьте приведенный ниже код сразу после того, как вы создали файл или уверены в его существовании … что-то вроде
$file = FCPATH.$randomidgenerated;
if(file_exists($file)){
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
Это должно сделать это.
Других решений пока нет …