Как да изтеглите файл в PHP

How Download File Php



По принцип не е необходим PHP скрипт за изтегляне на файл с разширенията exe и цип . Ако местоположението на файла на този тип файл е зададено в href атрибут на котва елемент, тогава файлът автоматично се изтегля, когато потребителят кликне върху връзката за изтегляне. Някои файлове, като напр образ файлове, PDF файлове, текст файлове, CSV файлове и т.н., не се изтеглят автоматично и вместо това се отварят в браузъра, когато потребителят кликне върху връзката за изтегляне. Тези файлове могат да бъдат изтеглени принудително в PHP с помощта readfile () функция, която не се изтегля автоматично. Този урок ви показва как да изтеглите насилствено всеки файл с помощта на PHP скрипт.

Проверете връзките за изтегляне

По -рано беше споменато, че цип и exe файловете се изтеглят автоматично, без да се използва PHP скрипт. Първо създайте HTML файл със следния код. Тук четирите привързани елемента са дефинирани за изтегляне на четирите типа файлове. Тези типове файлове включват TEXT, ZIP, PDF и JPG файлове.







Download.html



< html >
< глава >
< заглавие >Изтегляне на файлове</ заглавие >
</ глава >
< тяло >
< стр >< да се href='abc.txt'>Изтеглете TEXT файл</ да се ></ стр >
< стр >< да се href='horizon.zip'>Изтеглете ZIP файл</ да се ></ стр >
< стр >< да се href='lekcija.pdf'>Изтеглете PDF файл</ да се ></ стр >
< стр >< да се href='rose.jpg'>Изтеглете JPG файл</ да се ></ стр >
</ тяло >
</ html >

Изход
Следният диалогов прозорец ще се появи за изтегляне на файла, след като щракнете върху връзката с zip файл. След това потребителят може да изтегли файла или да го отвори в архивния мениджър.




Ако щракнете върху файла с изображение, изображението ще се отвори автоматично в браузъра, както е показано в следния изход. Трябва да запишете файла, за да направите копие на файла с изображение в локалното устройство. По същия начин, когато щракнете върху PDF и TEXT файлови връзки, съдържанието на файла ще бъде отворено в браузъра, без да изтегляте файла. Решението на този проблем е да изтеглите файла принудително с помощта на вградения PHP readfile () функция.





Изтеглете файл с помощта на функция readfile ()

The readfile () функцията се използва в PHP скрипта за насилствено изтегляне на всеки файл от текущото местоположение или файла с пътя на файла. Синтаксисът на тази функция е даден по -долу.



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

Тази функция може да приема три аргумента. Първият аргумент е задължителен, а другите два аргумента не са задължителни. Първият аргумент, $ име на файл , съхранява името на файла или името на файла с пътя, който ще се изтегли. Стойността по подразбиране на втория параметър, $ use_include_path , е false и ще бъде зададено на true, ако името на файла с пътя се използва в първия аргумент. Третият аргумент, $ контекст , се използва за обозначаване на ресурса на потока от контекст. Тази функция връща броя на байтовете, прочетени от файла, споменат в първия аргумент. Използването на тази функция е показано в следващите два примера.

Пример 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? пътека = лекция.pdf'> Изтеглете PDF файл</ да се ></ стр >
< стр >< да се href='download.php? path = rose.jpg'> Изтеглете JPG файл</ да се ></ стр >
</ тяло >
</ html >

Ще създадем PHP файла със следния код, за да изтеглите файла принудително. Тук, си отиде) функцията се използва за проверка дали $ _GET [‘път’] е дефиниран. Ако променливата е дефинирана, файлът съществува() функцията се използва за проверка дали файлът съществува в сървъра. След това, заглавка () функцията се използва за задаване на необходимата информация за заглавието, преди да се използва readfile () функция. The basename () функцията се използва за извличане на името на файла, а размер на файла() функцията се използва за четене на размера на файла в байтове, който ще бъде показан в диалоговия прозорец за отваряне, за да изтеглите файла. The flush () функцията се използва за изчистване на изходния буфер. The readfile () функцията се използва само с името на файла тук.

download.php



ако( си отиде ($ _GET['пътека']))
{
// Прочетете името на файла
$ име на файл = $ _GET['пътека'];
// Проверете дали файлът съществува или не
ако( файлът съществува ($ име на файл)) {

// Определете информация за заглавието
заглавка („Описание на съдържанието: Прехвърляне на файлове“);
заглавка („Content-Type: application/octet-stream“);
заглавка („Cache-Control: no-cache, must-revalidate“);
заглавка („Изтича: 0“);
заглавка („Съдържание-разположение: прикачен файл; име на файл = '. basename ($ име на файл).'' ');
заглавка („Дължина на съдържанието:“ . размер на файла ($ име на файл));
заглавка („Прагма: обществена“);

// Изчистване на изходния буфер на системата
зачервяване ();

// Прочетете размера на файла
readfile ($ име на файл);

// Прекратяване от скрипта
на ();
}
иначе{
изхвърлен 'Файлът не съществува.';
}
}
иначе
изхвърлен „Името на файла не е дефинирано.“
?>

Изход
Следният изход ще се появи след щракване върху връзката за изтегляне на файла с изображение. Размерът на файла на rose.jpg изображението е 27,2 КБ , както е показано в диалоговия прозорец. Можете да изтеглите файла, като изберете Запишете файла радио бутон и натискане на Добре бутон.

Пример 2: Изтеглете файл с път на файла

Ако файлът съществува на даденото местоположение на файла, пътят на файла ще трябва да бъде споменат в URL адреса. В този пример ще създадем HTML файл със следния код, който ще предава името на файла с пътя на файла:

изтегляне3.html

< html >
< глава >
< заглавие >Изтегляне на файлове</ заглавие >
</ глава >
< тяло >
< стр >< да се href='download.php? path = изтегляния/лекция.pdf'>Изтеглете PDF файл</ да се ></ стр >
< стр >< да се href='download2.php? path = downloads/rose.jpg'>Изтеглете JPG файл</ да се ></ стр >
</ тяло >
</ html >

Ще създадем PHP файл със следния код, за да изтеглите файл от пътя на файла. PHP кодът в предишния пример ще бъде леко променен, за да изтегли файла от дадения път. The clearstatecache () функцията се използва за изчистване на кеша, който е бил съхранен преди това. Два аргумента се използват в readfile () функция.

download2.php


ако( си отиде ($ _GET['пътека']))
{
// Прочетете URL адреса
$ url = $ _GET['пътека'];

// Изчистване на кеша
clearstatcache ();

// Проверете дали пътят на файла съществува или не
ако( файлът съществува ($ url)) {

// Определете информация за заглавието
заглавка („Описание на съдържанието: Прехвърляне на файлове“);
заглавка („Content-Type: application/octet-stream“);
заглавка („Съдържание-разположение: прикачен файл; име на файл = '. basename ($ url).'' ');
заглавка („Дължина на съдържанието:“ . размер на файла ($ url));
заглавка („Прагма: обществена“);

// Изчистване на изходния буфер на системата
зачервяване ();

// Прочетете размера на файла
readfile ($ url,вярно);

// Прекратяване от скрипта
на ();
}
иначе{
изхвърлен „Пътят на файла не съществува.“;
}
}
изхвърлен „Пътят на файла не е дефиниран.“

?>

Изход
След като щракнете върху връзката за изтегляне на PDF файла, ще се появи следният изход.

Видеоурок

Заключение

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