Php как скачать файл с сервера
Перейти к содержимому

Php как скачать файл с сервера

  • автор:

Работа с удалёнными файлами

В случае, если опция allow_url_fopen включена в конфигурационном файле php.ini , вы можете использовать URL-адреса HTTP и FTP в большинстве функций, принимающих в качестве параметра имя файла. Также вы можете использовать ссылки в операторах include , include_once , require и require_once (для корректной работы этих функций должна быть включена опция allow_url_include). Дополнительную информацию о поддерживаемых в PHP протоколах вы можете найти в Поддерживаемые протоколы и обёртки.

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

Пример #1 Получение заголовка удалённой страницы

$file = fopen ( «http://www.example.com/» , «r» );
if (! $file ) echo «

Невозможно открыть удалённый файл.\n» ;
exit;
>
while (! feof ( $file )) $line = fgets ( $file , 1024 );
/* Сработает, только если заголовок и сопутствующие теги расположены в одной строке */
if ( preg_match ( «@\(.*)\@i» , $line , $out )) $title = $out [ 1 ];
break;
>
>
fclose ( $file );
?>

Вы также можете работать с удалёнными файлами, расположенными на FTP-сервере (подразумевается, что вы авторизовались с необходимыми для этого привилегиями). Таким образом вы можете только создавать новые файлы, но попытка перезаписать существующий файл при помощи функции fopen() приведёт к ошибке.

Для того, чтобы авторизоваться под пользователем, отличным от ‘anonymous’, вам необходимо указать логин (и, возможно, пароль) в адресной строке, например так: ‘ ftp://user:password@ftp.example.com/path/to/file ‘. (Вы можете использовать этот же синтаксис для доступа к удалённым файлам по HTTP -протоколу, если необходима Basic-аутентификация.)

Пример #2 Сохранение данных на удалённом сервере

$file = fopen ( «ftp://ftp.example.com/incoming/outputfile» , «w» );
if (! $file ) echo «

Невозможно перезаписать удалённый файл.\n» ;
exit;
>
/* Запись данных. */
fwrite ( $file , $_SERVER [ ‘HTTP_USER_AGENT’ ] . «\n» );
fclose ( $file );
?>

Замечание:

Глядя на приведённый выше пример, у вас может возникнуть идея использовать эту технику для ведения удалённого лог-файла. К сожалению, это нереализуемо, поскольку попытка записи в уже существующий удалённый файл при помощи функции fopen() приведёт к ошибке. В реализации распределённого логирования, возможно, вам поможет функция syslog() .

User Contributed Notes

There are no user contributed notes for this page.

  • Особенности
    • HTTP-​аутентификация в PHP
    • Cookies
    • Сессии
    • Работа с XForms
    • Загрузка файлов на сервер
    • Работа с удалёнными файлами
    • Работа с соединениями
    • Постоянные соединения с базами данных
    • Работа с PHP из командной строки
    • Сборка мусора
    • Динамическая трассировка DTrace
    • Copyright © 2001-2024 The PHP Group
    • My PHP.net
    • Contact
    • Other PHP.net sites
    • Privacy policy

    Скачать файл на сервере

    Скачать указанный файл, можно передав следующие заголовки:

    // Пусть к файлу $file_path = 'image.jpg'; // узнать MIME файла $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); // Отправка заголовков для скачиваний файла header('Content-Disposition: attachment; filename="'.basename($file_path).'"'); header('Content-Type: '.$mime); header('Content-Length: '.filesize($file_path)); header('Connection: close'); echo file_get_contents($file_path);

    Заголовок Content-Disposition: attachment отвечает за скачивание файла. В поле filename указывается имя файла, под которым браузер предложит сохранить файл.

    В параметре Content-Type рекомендуется указывать реальный MIME-файла, т.к. браузеры могут подставить нужные программы для сохранения файла. В данном параметре также часто указывают «application/octet-stream», который означает, что формат файла не указан.

    Также есть параметр Content-Type: application/force-download , но его не рекомндуется использовать, т.к. данный MIME не является стандартном, и некоторые браузеры могут его не обработать.

    Скачиваемый файл будет содержать содержимое текущей страницы, поэтому в конце кода выводится исходный код картинки через функцию file_get_contents() .

    Обновлено: 20 сентября 2021

    Комментарии

    Авторизуйтесь, чтобы добавлять комментарии

    Скачать файл с сервера (PHP)

    Для работы с cURL, в PHP есть библиотека libcurl , при помощи которой можно скачивать файлы с удаленных серверов.

    Проще всего написать функцию curl_download() и использовать ее для скачивания изображений, архивов и других файлов. Нам понадобится работающая библиотека libcurl и опция опция CURLOPT_FILE .

    Функция curl_download()

    ✖ ❤ Мне помогла статья 4 оценки
    16388 просмотров 3 комментария Артём Фёдоров 28 января 2011

    Категории

    Читайте также

    • Как на PHP скачать файл
    • Как записать массив в файл (PHP)
    • Как скопировать файл (PHP)
    • Как создать файл (PHP)
    • Как очистить файл не удаляя его (PHP)
    • Как очистить папку (PHP)
    • Как проверить права доступа (PHP)
    • Дата изменения файла (PHP)
    • Singleton Trait (PHP)
    • Редирект (PHP)
    • Склонение числительных на PHP
    • Транслит (PHP)

    Комментарии

    07 декабря 2021 в 09:05

    А как скачать с ubuntu-машины, где указать логин и пароль ?

    Alexander Bulatov 20 февраля 2018 в 11:33

    Спасибо большое, Добрый Человек!

    Артём Фёдоров 08 мая 2018 в 11:53

    Alexander Bulatov, без проблем!

    Написать комментарий
    © Экспэнч 2010-2024
    При полном или частичном копировании статей сайта указывайте пожалуйста ссылку на источник
    Хотите узнать больше информации, пишите на: artem@expange.ru

    Вход на сайт

    Введите данные указанные при регистрации:

    Социальные сети

    Вы можете быстро войти через социальные сети:

    Загрузка файла с сервера

    Помигите организовать загрузку файла. Что я только не перпробывал, но браузер настойчиво пытается открыть файл, а не скачать.

    Отслеживать
    141 1 1 золотой знак 2 2 серебряных знака 9 9 бронзовых знаков
    задан 16 июл 2012 в 10:47
    alexxxer1234 alexxxer1234
    73 1 1 золотой знак 2 2 серебряных знака 11 11 бронзовых знаков
    16 июл 2012 в 10:49

    вы о header(‘Location: ‘.$fileName)? как ни странно редирект не работает вообще. Тоесть игнорируется абсолютно, как будто там его и нет. header(‘Location: ya.ru’) -даже на это ноль эмоций..

    16 июл 2012 в 11:04
    Вообще-то не редирект, а указание типа файла, чтобы отдать его на скачку.
    16 июл 2012 в 11:40

    2 ответа 2

    Сортировка: Сброс на вариант по умолчанию

    $file = '/path/to/file.jpg'; header('Content-Type: image/jpeg'); header('Content-Disposition: attachment; filename="file.jpg"'); readfile($file); 

    Имя файла и Content-type указываете для своего конкретного файла.

    Отслеживать
    ответ дан 16 июл 2012 в 12:49
    125 7 7 бронзовых знаков

    $file_name=$myrow['file']; header("Content-Length: ".filesize($file_name)); header("Content-Disposition: attachment; filename=".$file_name); header("Content-Type: application/x-force-download; name=\"".$file_name."\""); dfile($file_name); 

    качает файлы любого расширения

    Отслеживать
    ответ дан 19 июл 2012 в 5:19
    51 5 5 бронзовых знаков

      Важное на Мете
    Похожие

    Подписаться на ленту

    Лента вопроса

    Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

    Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.2.12.4680

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *