Простые способы загрузки файлов из общедоступного каталога в CodeIgniter

CodeIgniter — это популярная платформа PHP, предоставляющая надежный набор инструментов для создания веб-приложений. Одной из распространенных задач веб-разработки является предоставление пользователям возможности загружать файлы из общедоступного каталога. В этой статье мы рассмотрим несколько методов достижения этой цели в CodeIgniter, дополненные разговорными объяснениями и примерами кода.

Метод 1: использование функции force_download

CodeIgniter предоставляет встроенную функцию force_download, которая упрощает загрузку файлов. Эта функция принимает путь к файлу в качестве параметра и автоматически генерирует соответствующие заголовки для принудительной загрузки файла.

public function download_file()
{
    $file_path = 'path/to/file.pdf';
    $this->load->helper('download');
    force_download($file_path, NULL);
}

Метод 2. Использование помощника download

Помощник downloadв CodeIgniter обеспечивает дополнительную гибкость при загрузке файлов. Он позволяет указать тип контента и имя файла для загрузки.

public function download_file()
{
    $file_path = 'path/to/file.pdf';
    $this->load->helper('download');
    $data = file_get_contents($file_path);
    $name = 'new_filename.pdf';
    force_download($name, $data);
}

Метод 3. Использование функции readfile

Другой подход — использовать функцию readfile, которая считывает файл и выводит его непосредственно в браузер. Этот метод полезен, когда вам необходимо выполнить дополнительную обработку перед отправкой файла пользователю.

public function download_file()
{
    $file_path = 'path/to/file.pdf';
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file_path).'"');
    readfile($file_path);
}

Метод 4. Использование помощника по файлам и помощника по URL

Если вы хотите разместить ссылку для скачивания на своей веб-странице, вы можете использовать помощник по файлам и помощник по URL-адресам в CodeIgniter.

public function download_link()
{
    $file_path = 'path/to/file.pdf';
    $this->load->helper('file');
    $this->load->helper('url');
    echo anchor(base_url($file_path), 'Download File');
}

Загрузка файлов из общедоступного каталога в CodeIgniter — распространенное требование в веб-разработке. В этой статье мы рассмотрели несколько методов решения этой задачи. Предпочитаете ли вы простоту функции force_downloadили гибкость использования функции readfile, CodeIgniter предоставляет множество опций для удовлетворения ваших конкретных потребностей.