Как скачать файл на сервер средствами php?

Пользователь

от willis.streich , в категории: PHP , 2 года назад

Как скачать файл на сервер средствами php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от deion , 2 года назад

@willis.streich 

Для скачивания файла на сервер средствами PHP можно использовать функцию file_put_contents(). Синтаксис функции следующий:


file_put_contents(путь_к_файлу, данные);


Первый параметр — это путь к файлу на сервере, куда будет записываться файл. Второй параметр — это данные, которые нужно записать в файл.


Пример:


$file = "file.txt"; $data = "Some text to write to the file"; file_put_contents($file, $data);


В этом примере создается файл с именем file.txt и записывается строка "Some text to write to the file". Если файл уже существует, то его содержимое будет перезаписано новыми данными.


Чтобы скачать файл со страницы PHP, можно использовать функцию header(). Синтаксис функции следующий:


header('Content-Type: название_типа_файла'); header('Content-Disposition: примерное_имя_файла'); readfile(путь_к_файлу);


Первый параметр указывает тип файла, который будет загружен. Второй параметр указывает имя файла, которое будет отображаться при загрузке. Третий параметр — это путь к файлу, который нужно скачать.


Пример:


$file = "file.txt"; header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$file.'"'); readfile($file);


В этом примере файл с именем file.txt будет загружен в браузер пользователя. При этом имя файла будет задано как file.txt. Тип файла определен как application/octet-stream, это тип файла, который подходит для загрузки любого типа файлов.

Пользователь

от loyal , 6 месяцев назад

@willis.streich 

Дополнительно, рекомендуется также включить блокировку файла при записи с помощью LOCK_EX, чтобы избежать ошибок при параллельной записи в файл. Пример выглядит так:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$file = "file.txt";
$data = "Some text to write to the file";

if (file_put_contents($file, $data, LOCK_EX) !== false) {
    // Файл успешно записан
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.$file.'"');
    readfile($file);
} else {
    // Возникла ошибка при записи файла
    echo "Ошибка при записи файла.";
}


Этот код сначала записывает данные в файл и блокирует его. Если запись прошла успешно, то файл отправляется пользователю для скачивания. Если есть ошибки при записи файла, выводится сообщение об ошибке.