Jak pobrać plik w PHP

How Download File Php



Ogólnie rzecz biorąc, do pobrania pliku z rozszerzeniami nie jest wymagany żaden skrypt PHP exe oraz zamek błyskawiczny . Jeśli lokalizacja pliku tego typu pliku jest ustawiona w href atrybut elementu kotwicy, a następnie plik zostanie automatycznie pobrany, gdy użytkownik kliknie łącze pobierania. Niektóre pliki, takie jak obraz pliki, PDF pliki, tekst pliki, CSV pliki itp. nie są pobierane automatycznie, a zamiast tego otwierają się w przeglądarce, gdy użytkownik kliknie łącze pobierania. Te pliki można pobrać na siłę w PHP za pomocą readfile() funkcja, która nie pobiera się automatycznie. Ten samouczek pokazuje, jak wymusić pobieranie dowolnego pliku za pomocą skryptu PHP.

Sprawdź linki do pobrania

Wcześniej wspomniano, że zamek błyskawiczny oraz exe pliki pobierane są automatycznie, bez użycia skryptu PHP. Najpierw utwórz plik HTML z następującym kodem. Tutaj zdefiniowane są cztery elementy kotwicy, aby pobrać cztery typy plików. Te typy plików obejmują pliki TEXT, ZIP, PDF i JPG.







Pobierz.html



< html >
< głowa >
< tytuł >Pobierz pliki</ tytuł >
</ głowa >
< ciało >
< P >< do href='abc.txt'>Pobierz plik tekstowy</ do ></ P >
< P >< do href=„horyzont.zip”>Pobierz plik ZIP</ do ></ P >
< P >< do href='wykład.pdf'>Pobierz plik PDF</ do ></ P >
< P >< do href='róża.jpg'>Pobierz plik JPG</ do ></ P >
</ ciało >
</ html >

Wyjście
Po kliknięciu łącza pliku zip pojawi się następujące okno dialogowe umożliwiające pobranie pliku. Użytkownik może następnie pobrać plik lub otworzyć plik w menedżerze archiwów.




Jeśli klikniesz plik obrazu, obraz zostanie automatycznie otwarty w przeglądarce, jak pokazano na poniższym rysunku. Musisz zapisać plik, aby wykonać kopię pliku obrazu na dysku lokalnym. W ten sam sposób, gdy klikniesz odnośniki do plików PDF i TEXT, zawartość pliku zostanie otwarta w przeglądarce bez pobierania pliku. Rozwiązaniem tego problemu jest wymuszone pobranie pliku za pomocą wbudowanego PHP przeczytaj plik() funkcjonować.





Pobierz plik za pomocą funkcji readfile()

ten przeczytaj plik() Funkcja jest używana w skrypcie PHP do wymuszenia pobrania dowolnego pliku z bieżącej lokalizacji lub pliku ze ścieżką do pliku. Składnia tej funkcji jest podana poniżej.



Składnia
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

Ta funkcja może przyjmować trzy argumenty. Pierwszy argument jest obowiązkowy, a dwa pozostałe są opcjonalne. Pierwszy argument, $nazwa pliku , przechowuje nazwę pliku lub nazwę pliku ze ścieżką, która zostanie pobrana. Domyślna wartość drugiego parametru, $use_include_path , ma wartość false i zostanie ustawiona na true, jeśli nazwa pliku ze ścieżką zostanie użyta w pierwszym argumencie. Trzeci argument, $kontekst , służy do wskazania zasobu strumienia kontekstu. Ta funkcja zwraca liczbę bajtów odczytanych z pliku wymienionego w pierwszym argumencie. Zastosowania tej funkcji przedstawiono w dwóch poniższych przykładach.

Przykład 1: Pobierz plik z nazwą pliku

W tym przykładzie stworzymy plik HTML z następującym kodem, gdzie nazwa pliku zostanie przekazana jako parametr adresu URL o nazwie ścieżka , a wartość tego parametru zostanie przekazana do pliku PHP o nazwie download.php .

download2.html

< html >
< głowa >
< tytuł >Pobierz pliki</ tytuł >
</ głowa >
< ciało >
< P >< do href='download.php?path=abc.txt'>PobierzTEKSTplik</ do ></ P >
< P >< do href='download.php?path=horizon.zip'>Pobierz plik ZIP</ do ></ P >
< P >< do href='download.php?path=lecture.pdf'>Pobierz plik PDF</ do ></ P >
< P >< do href='download.php?path=rose.jpg'>Pobierz plik JPG</ do ></ P >
</ ciało >
</ html >

Stworzymy plik PHP z następującym kodem, aby wymusić pobranie pliku. Tutaj odszedł) funkcja służy do sprawdzenia, czy $_GET[„ścieżka”] definiuje. Jeśli zmienna jest zdefiniowana, plik istnieje() funkcja służy do sprawdzenia, czy plik istnieje na serwerze. Następnie nagłówek() funkcja służy do ustawienia niezbędnych informacji nagłówka przed użyciem przeczytaj plik() funkcjonować. ten nazwa podstawowa() funkcja służy do pobierania nazwy pliku, a rozmiar pliku() funkcja służy do odczytania rozmiaru pliku w bajtach, który zostanie wyświetlony w oknie dialogowym otwierania pliku. ten spłukać() funkcja służy do czyszczenia bufora wyjściowego. ten przeczytaj plik() funkcja jest używana tylko z nazwą pliku, tutaj.

download.php



Jeśli( odszedł ($_GET['ścieżka']))
{
//Odczytaj nazwę pliku
$nazwa pliku = $_GET['ścieżka'];
//Sprawdź, czy plik istnieje, czy nie
Jeśli( plik istnieje ($nazwa pliku)) {

//Zdefiniuj informacje nagłówka
nagłówek („Opis treści: Transfer plików”);
nagłówek („Typ treści: aplikacja/strumień oktetowy”);
nagłówek („Kontrola pamięci podręcznej: brak pamięci podręcznej, konieczność ponownego sprawdzenia poprawności”);
nagłówek („Wygasa: 0”);
nagłówek („Dyspozycja treści: załącznik; nazwa pliku=''. nazwa podstawowa ($nazwa pliku).'' '');
nagłówek („Długość treści:” . rozmiar pliku ($nazwa pliku));
nagłówek („Praga: publiczna”);

//Wyczyść bufor wyjściowy systemu
spłukać ();

//Odczytaj rozmiar pliku
przeczytaj plik ($nazwa pliku);

//Zakończ ze skryptu
ten ();
}
w przeciwnym razie{
wyrzucił 'Plik nie istnieje.';
}
}
w przeciwnym razie
wyrzucił 'Nazwa pliku nie jest zdefiniowana.'
?>

Wyjście
Poniższe dane wyjściowe pojawią się po kliknięciu łącza pobierania pliku obrazu. Rozmiar pliku róża.jpg obraz jest 27,2 KB , jak pokazano w oknie dialogowym. Możesz pobrać plik, wybierając Zapisz plik przycisk radio i naciśnięcie ok przycisk.

Przykład 2: Pobierz plik ze ścieżką pliku

Jeśli plik istnieje w podanej lokalizacji pliku, ścieżka do pliku będzie musiała być wymieniona w adresie URL. W tym przykładzie utworzymy plik HTML z następującym kodem, który przekaże nazwę pliku ze ścieżką do pliku:

download3.html

< html >
< głowa >
< tytuł >Pobierz pliki</ tytuł >
</ głowa >
< ciało >
< P >< do href='download.php?path=pobieranie/wykład.pdf'>Pobierz plik PDF</ do ></ P >
< P >< do href='download2.php?path=downloads/rose.jpg'>Pobierz plik JPG</ do ></ P >
</ ciało >
</ html >

Stworzymy plik PHP z następującym kodem, aby pobrać plik ze ścieżki pliku. Kod PHP w poprzednim przykładzie zostanie nieznacznie zmodyfikowany, aby pobrać plik z podanej ścieżki. ten wyczyśćpamięćstanową() Funkcja służy do czyszczenia pamięci podręcznej, która była wcześniej przechowywana. W przeczytaj plik() funkcjonować.

pobierz2.php


Jeśli( odszedł ($_GET['ścieżka']))
{
//Odczytaj adres URL
$url = $_GET['ścieżka'];

//Wyczyść pamięć podręczną
clearstatcache ();

//Sprawdź, czy ścieżka pliku istnieje, czy nie
Jeśli( plik istnieje ($url)) {

//Zdefiniuj informacje nagłówka
nagłówek („Opis treści: Transfer plików”);
nagłówek („Typ treści: aplikacja/strumień oktetowy”);
nagłówek („Dyspozycja treści: załącznik; nazwa pliku=''. nazwa podstawowa ($url).'' '');
nagłówek („Długość treści:” . rozmiar pliku ($url));
nagłówek („Praga: publiczna”);

//Wyczyść bufor wyjściowy systemu
spłukać ();

//Odczytaj rozmiar pliku
przeczytaj plik ($url,prawda);

//Zakończ ze skryptu
ten ();
}
w przeciwnym razie{
wyrzucił 'Ścieżka do pliku nie istnieje.';
}
}
wyrzucił 'Ścieżka pliku nie jest zdefiniowana.'

?>

Wyjście
Po kliknięciu łącza pobierania pliku PDF pojawi się następujący wynik.

Instrukcja wideo

Wniosek

W tym artykule przedstawiono prosty sposób na przymusowe pobranie dowolnego pliku za pomocą skryptu PHP, aby pomóc czytelnikom w dodaniu funkcji pobierania do ich skryptu.