Загрузка файла на сервер и скачивание файла с сервера в PHP
С помощью PHP можно загружать файлы на сервер и скачивать файлы с сервера. То есть, с помощью PHP можно легко организовать хранилище файлов, галерею.
Разберём, как создать на PHP загрузчик файлов на сервер
Чтобы организовать загрузку файла на сервер в PHP скрипте, необходимо использовать multipart-форму с полем ввода типа file. В атрибуте формы enctype необходимо указать multipart/form-data
Общий вид формы загрузки файла в PHP
Здесь используется поле ввода для файла input type=»file» Использование этого поля отображает на веб странице форму загрузки файла. upload_file — это имя загружаемого файла.
При обработке формы вся информация о файле в 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 ‘

‘;
>
?>
Пример вывода скрипта на веб страницу


Скачивание файла с сервера с помощью 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);
>
?>

Пример вывода скрипта на веб страницу 
Комментарии ( 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 );
?>?php
Вы также можете работать с удалёнными файлами, расположенными на 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 );
?>?php
Замечание:
Глядя на приведённый выше пример, у вас может возникнуть идея использовать эту технику для ведения удалённого лог-файла. К сожалению, это нереализуемо, поскольку попытка записи в уже существующий удалённый файл при помощи функции 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