Как скачать файл в PHP

How Download File Php



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

Проверить ссылки для скачивания

Ранее упоминалось, что застегивать а также исполняемый файлы загружаются автоматически, без использования скрипта PHP. Сначала создайте HTML-файл со следующим кодом. Здесь четыре элемента привязки определены для загрузки файлов четырех типов. Эти типы файлов включают файлы TEXT, ZIP, PDF и JPG.







Download.html



< html >
< голова >
< заглавие >Скачать файлы</ заглавие >
</ голова >
< тело >
< п >< к hrefзнак равноabc.txt>Скачать текстовый файл</ к ></ п >
< п >< к hrefзнак равно'Horizon.zip'>Скачать ZIP-файл</ к ></ п >
< п >< к hrefзнак равно'lecture.pdf'>Скачать PDF-файл</ к ></ п >
< п >< к hrefзнак равно'rose.jpg'>Скачать файл JPG</ к ></ п >
</ тело >
</ html >

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




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





Загрузить файл с помощью функции readfile ()

В readfile () Функция используется в скрипте PHP для принудительной загрузки любого файла из текущего местоположения или файла с путем к файлу. Синтаксис этой функции приведен ниже.



Синтаксис
int readfile (строка $ filename [, bool $ use_include_path = false [, resource $ context]])

Эта функция может принимать три аргумента. Первый аргумент является обязательным, а два других аргумента - необязательными. Первый аргумент, $ filename , сохраняет имя файла или имя файла с путем, который будет загружен. Значение по умолчанию второго параметра, $ use_include_path , имеет значение false и будет установлено в значение true, если имя файла с путем используется в первом аргументе. Третий аргумент, $ context , используется для обозначения ресурса потока контекста. Эта функция возвращает количество байтов, прочитанных из файла, указанного в первом аргументе. Использование этой функции показано в следующих двух примерах.

Пример 1: Загрузить файл с именем файла

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

download2.html

< html >
< голова >
< заглавие > Скачать файлы</ заглавие >
</ голова >
< тело >
< п >< к hrefзнак равно'download.php? path = abc.txt'> СкачатьТЕКСТфайл</ к ></ п >
< п >< к hrefзнак равно'download.php? path = horizon.zip'> Скачать ZIP-файл</ к ></ п >
< п >< к hrefзнак равно'download.php? path = lecture.pdf'> Скачать файл PDF</ к ></ п >
< п >< к hrefзнак равно'download.php? path = rose.jpg'> Скачать файл JPG</ к ></ п >
</ тело >
</ html >

Мы создадим файл PHP со следующим кодом для принудительной загрузки файла. Здесь ушел) функция используется для проверки того, $ _GET ['путь'] определено. Если переменная определена, Файл существует() Функция используется для проверки наличия файла на сервере. Далее заголовок () функция используется для установки необходимой информации заголовка перед использованием readfile () функция. В basename () функция используется для получения имени файла, а размер файла() Функция используется для чтения размера файла в байтах, который будет показан в открывшемся диалоговом окне для загрузки файла. В промывать() функция используется для очистки буфера вывода. В readfile () Здесь функция используется только с именем файла.

download.php



если( ушел ($ _GET['дорожка']))
{
// Считываем имя файла
$ filename знак равно $ _GET['дорожка'];
// Проверяем, существует файл или нет
если( Файл существует ($ filename)) {

// Определяем информацию заголовка
заголовок ('Content-Description: передача файлов');
заголовок ('Content-Type: приложение / октет-поток');
заголовок ('Cache-Control: без кеширования, необходимо перепроверить');
заголовок ('Истекает: 0');
заголовок ('Content-Disposition: вложение; имя файла = ''. базовое имя ($ filename).'' ');
заголовок ('Content-Length:' . размер файла ($ filename));
заголовок ('Прагма: общественность');

// Очистить буфер вывода системы
промывать ();

// Считываем размер файла
файл для чтения ($ filename);

// Завершаем скрипт
в ();
}
еще{
выбросил 'Файл не существует.';
}
}
еще
выбросил 'Имя файла не определено'.
?>

Выход
Следующий вывод появится после щелчка по ссылке для загрузки файла изображения. Размер файла rose.jpg изображение 27,2 КБ , как показано в диалоговом окне. Вы можете скачать файл, выбрав Сохранить файл радиокнопку и нажав Ok кнопка.

Пример 2: Загрузить файл с указанием пути к файлу

Если файл существует в указанном месте, путь к файлу необходимо указать в URL-адресе. В этом примере мы создадим HTML-файл со следующим кодом, который передаст имя файла с путем к файлу:

download3.html

< html >
< голова >
< заглавие >Скачать файлы</ заглавие >
</ голова >
< тело >
< п >< к hrefзнак равно'download.php? path = downloads / lecture.pdf'>Скачать PDF-файл</ к ></ п >
< п >< к hrefзнак равно'download2.php? path = downloads / rose.jpg'>Скачать файл JPG</ к ></ п >
</ тело >
</ html >

Мы создадим файл PHP со следующим кодом для загрузки файла по пути к файлу. Код PHP в предыдущем примере будет немного изменен для загрузки файла по заданному пути. В clearstatecache () Функция используется для очистки кеша, который был ранее сохранен. Два аргумента используются в readfile () функция.

download2.php


если( ушел ($ _GET['дорожка']))
{
// Читаем url
$ url знак равно $ _GET['дорожка'];

// Очищаем кеш
clearstatcache ();

// Проверяем, существует ли путь к файлу
если( Файл существует ($ url)) {

// Определяем информацию заголовка
заголовок ('Content-Description: передача файлов');
заголовок ('Content-Type: приложение / октет-поток');
заголовок ('Content-Disposition: вложение; имя файла = ''. базовое имя ($ url).'' ');
заголовок ('Content-Length:' . размер файла ($ url));
заголовок ('Прагма: общественность');

// Очистить буфер вывода системы
промывать ();

// Считываем размер файла
файл для чтения ($ url,правда);

// Завершаем скрипт
в ();
}
еще{
выбросил 'Путь к файлу не существует'.;
}
}
выбросил 'Путь к файлу не определен'.

?>

Выход
После щелчка по ссылке для скачивания файла PDF появится следующий результат.

Видеоурок

Заключение

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