Как выбрать место для сохранения загружаемых файлов при форсированной загрузке файлов в Codeigniter?

Теперь файл 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);

1 ответ

Решение

Из того, что я вижу, вы просто создаете содержимое файла для динамической загрузки... Теперь вам нужно заставить браузер загрузить файл в выбранную клиентом часть, а затем, вероятно, удалить временный файл, если вы этого не сделаете. хотите сохранить его на сервере... Добавьте приведенный ниже код сразу после того, как вы создали файл или уверены в его существовании... что-то вроде

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

Это должно сделать это.

Другие вопросы по тегам