Проверить ссылки для скачивания
Ранее упоминалось, что застегивать а также исполняемый файлы загружаются автоматически, без использования скрипта 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, чтобы помочь читателям добавить функцию загрузки в свой сценарий.