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.