i want to be able to download a csv file from one of my project folders using the phpexcel library, but its only echoing the csv contents on the browser. i also tried using the usual downloading method of just putting the file path on the button, like what we do with other documents and files but it still echoed the contents in the browser.Here is the download method in the controller.
public function download($fileName = NULL) {
if ($fileName) {
$file = realpath ( "download" ) . "\\" . $fileName;
// check file exists
if (file_exists ( $file )) {
// get file content
$data = file_get_contents ( $file );
//force download
force_download ( $fileName, $data );
} else {
// Redirect to base url
// redirect ( base_url () );
echo "error";
}
}
}
}
here is the download button in my view with the file path.
<a class="btn btn-success btn-sm" href='<?php echo base_url(); ?>download/ecofarmer.csv' target="_blank">Download Sample Database</a> <br><br><br>
and these are the additions i made in the routes file
$route['download/(:any)'] = "/excelimport/download/$1";
You have to use base_url() instead of realpath
public function download($fileName = NULL) {
if ($fileName) {
$file = base_url()."download/".$fileName;
if (file_exists ($file)) {
force_download ($fileName, $file);
} else {
// redirect ( base_url () );
echo "error";
}
}
}
I should have linked the button to the responsible controller, i had linked it to the file instead. silly mistake.
If you are using html5. it can be done as below.
<a href="/path/file.csv" download>My CSV File</a>
Also please refer,