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

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

  • автор:

Загрузка файла на сервер и скачивание файла с сервера в PHP

С помощью PHP можно загружать файлы на сервер и скачивать файлы с сервера. То есть, с помощью PHP можно легко организовать хранилище файлов, галерею.
Разберём, как создать на PHP загрузчик файлов на сервер
Чтобы организовать загрузку файла на сервер в PHP скрипте, необходимо использовать multipart-форму с полем ввода типа file. В атрибуте формы enctype необходимо указать multipart/form-data
Общий вид формы загрузки файла в PHP





Здесь используется поле ввода для файла input type=»file» Использование этого поля отображает на веб странице форму загрузки файла. upload_file — это имя загружаемого файла.
форма загрузки файла в php
При обработке формы вся информация о файле в PHP записывается в глобальный массив $_FILES Основные значения глобального массива $_FILES:
$_FILES[‘upload_file’][‘name’] — имя файла до его отправки на сервер
$_FILES[‘upload_file’][‘size’] — размер загруженного файла в байтах;
$_FILES[‘upload_file’][‘type’] — тип загруженного файла
$_FILES[‘upload_file’][‘tmp_name’] — имя загруженного файла во временном каталоге
$_FILES[‘upload_file’][‘error’] — Код ошибки, которая может возникнуть при загрузке файла.
Указываем путь, куда необходимо загрузить файл
$переменная файла = «путь».$_FILES[‘upload_file’][‘name’];
Перед загрузкой файла в указанную папку, для безопасности он сохраняется во временную директорию. Путь к временному файлу указан в глобальном массиве $_FILES[‘upload_file’][‘tmp_name’]
Чтобы файл загрузить в нужную папку из временной директории, используем команду
move_uploaded_file($_FILES[‘upload_file’][‘tmp_name’], $переменная файла);
После загрузки файла делаем проверку на существование загружаемого файла и выводим информацию о загруженном файле.
if(isset($_FILES[‘upload_file’][‘name’]))
echo «Загруженный файл: «.$_FILES[‘upload_file’][‘name’].»
«;
echo «Размер: «.$_FILES[‘upload_file’][‘size’].»байт»;
>
Полный PHP код скрипта загрузчика файла. Для примера загружается файл с именем itrobo.jpg, после загрузки файла выводится информация о загруженном файле и загруженный файл на веб страницу.










$file = «upload/».$_FILES[‘upload_file’][‘name’];
move_uploaded_file($_FILES[‘upload_file’][‘tmp_name’], $file);
if(isset($_FILES[‘upload_file’][‘name’]))
echo «Загруженный файл: «.$_FILES[‘upload_file’][‘name’].»
«;
echo «Размер: «.$_FILES[‘upload_file’][‘size’].»байт»;
echo ‘

image

‘;
>
?>
Пример вывода скрипта на веб страницу
загрузка файла на сервер в php

itrobo

Скачивание файла с сервера с помощью PHP
Чтобы скачать файл с сервера в PHP, используется следующая конструкция
$переменная файла = путь к файлу;
header(‘Content-Type: тип файла);
header(‘Content-Disposition: attachment; filename=»имя файла»‘);
readfile($переменная файла);
Пример скачивания файла с сервера с помощью PHP
$file = ‘upload/itrobo.jpg’;
header(‘Content-Type: image/jpeg’);
header(‘Content-Disposition: attachment; filename=»itrobo.jpg»‘);
Напишем пример PHP скрипта, который выводит на веб страницу изображение с кнопкой «Загрузить!». При нажатии на кнопку «Загрузить!», картинка скачивается с веб сервера на компьютер.
Скрипты, в которых идёт вызов команды «Header», необходимо сохранять в кодировке UTF-8 без BOM. Это можно сделать с помощью редактора Notepad++. PHP обработчик следует писать в самом начале страницы.
Создаём HTML форму с кнопкой «Загрузить!». Она нужна для того, чтобы загрузить PHP обработчик скачивания файлов. Размещаем изображение на веб странице.




Тег для вывода изображения в форме. Подробнее о работе с формами в PHP




Напишем PHP обработчик кнопки Если кнопка нажата, скачиваем файл
if(isset($_POST[‘info’])) $file = ‘upload/itrobo.jpg’;
header(‘Content-Type: image/jpeg’);
header(‘Content-Disposition: attachment; filename=»itrobo.jpg»‘);
readfile($file);
>
?>

Полный код PHP скрипта для скачивания файла с сервера

if(isset($_POST[‘info’])) $file = ‘upload/flower.jpg’;
header(‘Content-Type: image/jpeg’);
header(‘Content-Disposition: attachment; filename=»itrobo.jpg»‘);
readfile($file);
>
?>



icon




Пример вывода скрипта на веб страницу
скачивание файла в php

Комментарии ( 0 )

Нет комментариев. Ваш будет первым!

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

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

// Пусть к файлу $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 оценки
16407 просмотров 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

Вход на сайт

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

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

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

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

В случае, если опция 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.

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

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