Полное руководство по загрузке файлов в PHP

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

Метод 1: использование функции header()
Функция header() в PHP позволяет нам отправлять HTTP-заголовки в браузер. Установив соответствующие заголовки, мы можем инициировать загрузку файла. Вот пример:

<?php
$file = 'path/to/file.pdf';
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
?>

Метод 2: использование функции readfile()
Функция readfile() считывает файл и отправляет его содержимое непосредственно в выходной буфер. Этот метод прост и эффективен для файлов небольшого и среднего размера. Вот пример:

<?php
$file = 'path/to/file.pdf';
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
readfile($file);
exit;
?>

Метод 3: использование file_get_contents() и echo
В этом методе мы используем функцию file_get_contents() для считывания содержимого файла в переменную и последующего вывода его в браузер. Вот пример:

<?php
$file = 'path/to/file.pdf';
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
echo file_get_contents($file);
exit;
?>

Метод 4: использование fopen(), fread() и fclose()
Этот метод включает в себя открытие файла с помощью fopen(), чтение его содержимого с помощью fread() и закрытие файла с помощью fclose(). Вот пример:

<?php
$file = 'path/to/file.pdf';
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
$handle = fopen($file, 'rb');
while (!feof($handle)) {
    echo fread($handle, 8192);
}
fclose($handle);
exit;
?>

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