#php #codeigniter
#php #codeigniter
Вопрос:
Я пытаюсь загрузить загруженные файлы в Code igniter, но это не работает. Вот мой контроллер (download.php ). Если кто-то может опубликовать пример, высоко ценю.
<?php
class Download extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper(array('form', 'url'));
}
public function index() {
$this->load->view('vwHomeHeader', $data);
$this->load->view('vwHomeMenu', $data);
$this->load->view('download', $data);
$this->load->view('vwHomeFooter', $data);
}
public function download ($file_path = "") {
$this->load->helper('download');
$data['download_file'] = $file_path;
$this->load->view("download",$data);
redirect(current_url(), "refresh");
}
}
?>
И вот файл просмотра (download.php )
<?php
if( ! empty($download_file))
{
$data = file_get_contents(base_url("/upload/".$download_file));
$name = $download_file;
force_download($name, $data);
}
?>
Спасибо
Комментарии:
1. Пожалуйста, опишите ожидаемое и фактическое поведение
Ответ №1:
изменяйте по своему усмотрению (контроллер, представление не требуется, если вы не хотите использовать привязку тега к URL-адресу контроллера загрузки)
if($file) {
$filepath = FCPATH . 'uploads/projects/'.$ProjID.'/'.$file['file_name'];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($filepath));
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($filepath));
ob_clean();
flush();
readfile($filepath);
exit;
}
Комментарии:
1. Привет, Джеймс, спасибо за ответ… но что мне действительно нужно, так это отобразить существующие файлы в папке «загрузка», и когда пользователь выберет файл, затем загрузите
2. Затем используйте PHP для чтения файлов в расположении и перечисления их, а затем перенаправьте на другой контроллер и используйте этот скрипт.