Как выбрать место для сохранения загружаемых файлов при форсированной загрузке файлов в 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;
}

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]