Предполагая, что у вас есть контроллер с именем Test
и у него есть метод с именем download()
. Таким образом, URL-адрес будет таким, как вы отметили вопрос с помощью CodeIgniter:
<a href="http://www.example.com/test/download">Download PDF</a>
Далее, извлеките BLOB
данные для файла из базы данных и поместите их в метод. Предполагая, что вы получаете $value['marksheet'];
из вашей базы данных.
<?php
function download() {
// Prevents out-of-memory issue
if (ob_get_level()) {
ob_end_clean();
}
// Here you should prepare $value['marksheet'];
// Notice I passed $value['marksheet'] in base64_encode
$encoded_data = base64_encode($value['marksheet']);
// Decodes the encoded data
$decoded_data = base64_decode($encoded_data);
// Set a path where file_put_contents() will create a file
$file = APPPATH . '../upload/temporary_file.pdf';
// Writes data to the specified file
file_put_contents($file, $decoded_data);
// Modify the name as you want
$filename = 'download_name.pdf';
header('Expires: 0');
header('Pragma: public');
header('Cache-Control: must-revalidate');
header('Content-Length: ' . filesize($file));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
readfile($file);
if (file_exists($file)) {
unlink($file);
}
}