Jak pobrać plik w PHP

Jak pobrać plik w PHP
Ogólnie rzecz biorąc, nie jest wymagany skrypt PHP do pobrania pliku z rozszerzeniami exe I zamek błyskawiczny. Jeśli lokalizacja pliku tego typu pliku jest ustawiona w Href atrybut elementu kotwicy, a następnie plik automatycznie pobiera, gdy użytkownik kliknie link do pobrania. Niektóre pliki, takie jak obraz akta, PDF akta, tekst akta, CSV pliki itp., Nie pobieraj automatycznie, a zamiast tego otwórz w przeglądarce, gdy użytkownik kliknie link do pobrania. Te pliki można pobrać siłą w PHP za pomocą Readfile () funkcja, która nie pobiera automatycznie. Ten samouczek pokazuje, jak przymusowo pobrać dowolny plik za pomocą skryptu PHP.

Sprawdź linki do pobrania

Wcześniej wspomniano o tym zamek błyskawiczny I exe Pliki pobierają 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 tekstowe, zip, pdf i jpg.

Pobierać.html



Pobierz pliki


Pobierz plik tekstowy


Pobierz plik zip


Pobierz plik PDF


Pobierz plik JPG



Wyjście
Poniższe okno dialogowe pojawi się, aby pobrać plik po kliknięciu linku pliku zip. Użytkownik może następnie pobrać plik lub otworzyć plik w Menedżerze Archiwum.


Jeśli klikniesz plik obrazu, obraz zostanie otwarty automatycznie w przeglądarce, jak pokazano przy następujących wyjściach. Musisz zapisać plik, aby wykonać kopię pliku obrazu na dysk lokalnym. W ten sam sposób, po kliknięciu linków PDF i plików tekstowych, zawartość pliku zostanie otwarta w przeglądarce bez pobierania pliku. Rozwiązaniem tego problemu jest pobranie pliku siłą za pomocą wbudowanego PHP Readfile () funkcjonować.

Pobierz plik za pomocą funkcji ReadFile ()

Readfile () Funkcja jest używana w skrypcie PHP do przymusowego pobrania dowolnego pliku bieżącej lokalizacji lub pliku ze ścieżką pliku. Składnia tej funkcji podano poniżej.

Składnia
int readFile (String $ filename [, bool $ użyj_include_path = false [, zasób $ context]]))

Ta funkcja może wziąć trzy argumenty. Pierwszy argument jest obowiązkowy, a pozostałe dwa argumenty są opcjonalne. Pierwszy argument, $ nazwa pliku, przechowuje nazwę pliku lub nazwę pliku ze ścieżką, która będzie pobierać. Domyślna wartość drugiego parametru, $ użyj_include_path, jest fałszywe i zostanie ustawione na true, jeśli nazwa pliku ze ścieżką jest używana 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 pokazano w następujących dwóch przykładach.

Przykład 1: Pobierz plik z nazwą pliku

W tym przykładzie utworzymy plik HTML z następującym kodem, w którym nazwa pliku zostanie przekazana jako parametr nazwanego adresu URL ścieżka, a wartość tego parametru zostanie przekazana do pliku PHP o nazwie pobierać.php.

Pobierz2.html



Pobierz pliki


Pobierz plik tekstowy


Pobierz plik zip


Pobierz plik PDF


Pobierz plik JPG



Utworzymy plik PHP z następującym kodem, aby pobrać plik przymusowo. Tutaj isset () 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 Readfile () funkcjonować. Basename () funkcja służy do odzyskania nazwy pliku i rozmiar pliku() Funkcja służy do odczytu rozmiaru pliku w bajtach, który zostanie wyświetlony w oknie dialogowym Otwarcie, aby pobrać plik. spłukać() Funkcja służy do wyczyszczenia bufora wyjściowego. Readfile () Funkcja jest używana tylko z nazwą pliku tutaj, tutaj.

pobierać.php

if (isset ($ _ get ['ścieżka']))

// Przeczytaj nazwę pliku
$ filename = $ _get ['ścieżka'];
// Sprawdź, czy plik istnieje lub nie
if (plik_exists ($ fileName))
// Zdefiniuj informacje o nagłówku
nagłówek („Description treści: przesyłanie pliku”);
nagłówek („Content-Type: Application/Octet-Stream”);
nagłówek („Cache-Control: Bez pamięci podręcznej, obowiązek”);
nagłówek („wygasa: 0”);
Nagłówek („Dispozycja treści: załącznik; nazwa pliku =”.Basename ($ nazwa pliku).„” ”);
nagłówek („długość treści:” . pliki ($ nazwa pliku));
Nagłówek („Pragma: publiczny”);
// Wyczyść bufor wyjściowy systemu
spłukać();
// Odczytaj rozmiar pliku
ReadFile ($ nazwa pliku);
// zakończyć skrypt
umierać();

w przeciwnym razie
plik echo „nie istnieje.";


w przeciwnym razie
echo „nazwa pliku nie jest zdefiniowana."
?>

Wyjście
Następujące dane wyjściowe pojawi się po kliknięciu linku do pobrania 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 opcji i naciśnięcie OK przycisk.

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

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

Pobierz3.html



Pobierz pliki


Pobierz plik PDF


Pobierz plik JPG



Utworzymy plik PHP z następującym kodem, aby pobrać plik ze ścieżki pliku. Kod PHP w poprzednim przykładzie zostanie nieznacznie zmodyfikowany w celu pobrania pliku z danej ścieżki. clearStateCache () Funkcja służy do wyczyszczenia pamięci podręcznej, która była wcześniej przechowywana. W dwóch argumentach są używane w Readfile () funkcjonować.

Pobierz2.php

if (isset ($ _ get ['ścieżka']))

// Przeczytaj adres URL
$ url = $ _get ['ścieżka'];
// Wyczyść pamięć podręczną
clearStatCache ();
// sprawdź ścieżkę pliku istnieje lub nie
if (plik_exists ($ url))
// Zdefiniuj informacje o nagłówku
nagłówek („Description treści: przesyłanie pliku”);
nagłówek („Content-Type: Application/Octet-Stream”);
Nagłówek („Dispozycja treści: załącznik; nazwa pliku =”.Basename ($ url).„” ”);
nagłówek („długość treści:” . filesize ($ url));
Nagłówek („Pragma: publiczny”);
// Wyczyść bufor wyjściowy systemu
spłukać();
// Odczytaj rozmiar pliku
Readfile ($ url, true);
// zakończyć skrypt
umierać();

w przeciwnym razie
Echo „Ścieżka pliku nie istnieje.";


Echo „Ścieżka pliku nie jest zdefiniowana."
?>

Wyjście
Po kliknięciu linku do pobierania pliku PDF pojawi się następujące dane wyjściowe.

Film instruktażowy

Wniosek

W tym artykule przedstawiono prosty sposób przymusowego pobrania dowolnego pliku za pomocą skryptu PHP, aby pomóc czytelnikom dodać funkcję pobierania w ich skrypcie.