Prześlij plik w PHP

Prześlij plik w PHP

Przesyłanie plików jest powszechnym zadaniem aplikacji internetowych. Do przesłania są wymagane różne typy plików na podstawie aplikacji. Pliki obrazu, pliki tekstowe, pliki PDF, pliki XML itp. można przesłać za pomocą skryptu PHP. Jeden lub więcej plików można przesłać przez PHP. Istnieje kilka dyrektyw PHP w PHP.ini Plik konfiguracyjny i wbudowane funkcje PHP związane z przesłaniem plików, które są omówione w tym samouczku. HTML ma określony atrybut w znaczniku formularza dla zadań przesyłania plików, to znaczy Enctype.

Dyrektywy PHP dla przesyłania plików

Dyrektywa PHP Zamiar
plik_uploads Wartość tej dyrektywy musi być NA Aby przesłać plik za pomocą skryptu PHP. Domyślna wartość tej dyrektywy to NA.
upload_tmp_dir Służy do ustawienia katalogu tymczasowego, w którym plik zostanie przesłany.
upload_max_fileSize Służy do ustawienia maksymalnego rozmiaru pliku, który można przesłać.
max_file_uploads Służy do ustawienia liczby plików, które można przesłać.
post_max_size Służy do ustawiania maksymalnego rozmiaru danych postu, a wartość tej dyrektywy musi być większa niż wartość dyrektywy upload_max_fileSize, ponieważ plik jest przesyłany przez żądanie POST.
max_input_time Służy do ustawienia maksymalnego czasu na odczyt danych pliku przesyłania.
Max_Execution_Time Służy do ustawiania maksymalnej ilości czasu w sekundach, aby wykonać skrypt do przesłania pliku.
pamięć_limit Służy do ustawienia maksymalnego rozmiaru pamięci wymaganego do wykonywania skryptu PHP do przesłania pliku.

Funkcje PHP dla przesyłania plików

Dwie wbudowane funkcje są używane głównie w PHP do przesłania pliku, który jest wymieniony poniżej.

A. is_uploaded_file ()
Służy do sprawdzenia, czy plik jest przesyłany przez post HTTP, który pomaga zapobiec atakowi złośliwego użytkownika.

B. Move_uploaded_file ()
Służy do przenoszenia przesłanego pliku do lokalizacji serwera WWW. Ta funkcja zwróci true, jeśli plik zostanie przesłany i pomyślnie przeniesiony.

Zmienna przesyłania pliku PHP

Zmienna $ _files macierzy przechowuje wszystkie informacje związane z przesyłaniem pliku na serwer. Jest to zmienna superglobalna PHP, która jest dostępna w dowolnym miejscu od skryptu. Zawiera pięć rodzajów informacji: nazwa pliku, typ, rozmiar, tymczasowa nazwa pliku i błędy związane z przesłaniem pliku. Cel każdej wartości tablicy $ _file został wspomniany poniżej. Załóżmy, że nazwa nazwy pola przesyłania to 'wgrywać' Tutaj.

A. $ _Files ['upload'] ['Nazwa']
Służy do uzyskania oryginalnej nazwy pliku, która została przesłana przez komputer klienta.

B. $ _Files ['upload'] ['tmp_name']
Służy do uzyskania tymczasowej nazwy pliku, która została tymczasowo przechowywana na serwerze.

C. $ _Files ['upload'] ['type']
Służy do uzyskania typu MIME przesłanego pliku.

D. $ _Files ['upload'] ['rozmiar']
Służy do uzyskania rozmiaru przesłanego pliku w bajtach.

mi. $ _Files ['upload'] ['error']
Służy do uzyskania kodu błędu związanego z zadaniem przesyłania. Zmienna może zawierać dowolny z 7 rodzajów wartości wymienionych poniżej.

Kod błędu Opis
1- upload_err_ok Generuje, gdy plik pomyślnie przesyła.
2- upload_err_ini_size Generuje, jeśli rozmiar pliku przekracza wartość upload_max_fileSize dyrektywa zdefiniowana w PHP.plik INI.
3- upload_err_partial Generuje, jeśli rozmiar pliku przekracza wartość dyrektywy MAX_FILE_SIZE, która jest zdefiniowana w formie HTML.
4- upload_err_no_file Generuje, jeśli nie zostanie przesłany żaden plik.
5- upload_err_no_tmp_dir Generuje, jeśli nie brakuje żadnego katalogu tymczasowego.
6- upload_err_cant_write Generuje, jeśli nie ma zgody na zapis w lokalizacji serwera.
7- upload_err_extension Generuje, jeśli rozszerzenie PHP zatrzyma zadanie przesyłania.

Przesyłanie pliku za pomocą PHP

W tej części samouczka pokazano różne przykłady przesyłania pliku za pomocą skryptu PHP.

Przykład 1: Prześlij dowolny typ pliku

Możesz przesłać plik w bieżą. Musisz utworzyć folder w lokalizacji serwera, aby przesłać plik w określonym folderze przed wykonaniem skryptu PHP. Utworzyłem folder o nazwie 'przesyła wewnątrz folderu roboczego. Utwórz plik PHP z następującym skryptem, który prześle plik dowolnego typu wewnątrz 'przesyła teczka. Formularz HTML z polem typu pliku i przycisk przesyłania został użyty w skrypcie do wyboru pliku z komputera klienta do przesłania. Jeśli 1 jest generowane jako kod błędu po przesłaniu pliku, plik jest przesłany pomyślnie. Następnie Move_upload_file () Funkcja została użyta do przeniesienia przesłanego pliku do lokalizacji serwera. Komunikat o sukcesie zostanie wydrukowany, jeśli plik zostanie pomyślnie przesłany do lokalizacji serwera; W przeciwnym razie zostanie wyświetlony komunikat o błędzie.

// Sprawdź, czy dowolny plik jest wybrany lub nie
if (isset (pliki $ _ ['uploadFile'])))

// Sprawdź wszelkie błąd przesyłania, czy nie
if ($ _files ['uploadfile'] ['error'] === upload_err_ok)

// Przeczytaj oryginalną nazwę pliku
$ filename = $ _files ['uploadFile'] ['name'];
// Przeczytaj tymczasową nazwę pliku
$ filetemppath = $ _files ['uploadFile'] ['tmp_name'];
// Skonfiguruj ścieżkę pliku przesyłania
$ filepath = dirname (__ plik__).„/przesyła/”.$ nazwa pliku;
// Prześlij plik za pomocą funkcji Move_upload_File ()
if (Move_uploaded_file ($ filetEmppath, $ filepath))

// Wydrukuj komunikat sukcesu
Echo '

Plik jest przesłany pomyślnie.

';;

w przeciwnym razie

// Wydrukuj komunikat o błędzie
Echo '

Błąd przesyłanie pliku.
'. $ _Files ['uploadFile'] ['błąd']. '

';;


w przeciwnym razie

// Wydrukuj komunikat o błędzie
Echo '

Błąd przesyłanie pliku.
'. $ _Files ['uploadFile'] ['błąd']. '

';;


w przeciwnym razie

?>




Przesyłanie pliku za pomocą PHP



Wybierz plik:





?>

Wyjście
Następujące dane wyjściowe pojawi się, jeśli skrypt zostanie wykonywany z serwera WWW.

Kliknij na Przeglądać przycisk, aby wybrać plik do przesłania i naciśnij przycisk Prześlij, aby przesłać plik do serwera.

Poniższa wiadomość pojawi się, jeśli plik zostanie pomyślnie przesłany.

Przykład 2: Prześlij plik określonego typu i rozmiaru

W tym przykładzie pokazano sposób przesłania pliku za pomocą osobnego pliku HTML i. Utwórz plik HTML z następującym skryptem, aby wyświetlić formularz do przesłania pliku.

uploadForm.html





Przesyłanie pliku JPEG za pomocą PHP



Wybierz plik:



Utwórz skrypt PHP z następującym skryptem, który prześle tylko plik JPEG, a rozmiar będzie mniejszy niż 300000 bajtów. Typ i rozmiar pliku zostały odczytane za pomocą $ _files ['uploadFile'] ['type'] i $ _files ['uploadFile'] ['size']]. Komunikat o sukcesie pojawi się, jeśli przesłany typ i rozmiar pliku pasują do kryteriów zdefiniowanych w warunku „jeśli”; W przeciwnym razie zostanie wyświetlony komunikat o błędzie.

upload2.php

// Sprawdź, czy dowolny plik jest wybrany lub nie
if (isset (pliki $ _ ['uploadFile'])))

// Sprawdź wszelkie błąd przesyłania, czy nie
if ($ _files ['uploadfile'] ['error'] === upload_err_ok)

// Przeczytaj oryginalną nazwę pliku
$ filename = $ _files ['uploadFile'] ['name'];
// Przeczytaj tymczasową nazwę pliku
$ filetemppath = $ _files ['uploadFile'] ['tmp_name'];
// odczytaj rozmiar pliku
$ filesize = $ _files ['uploadFile'] ['size'];
// odczytał typ pliku
$ fileType = $ _files ['uploadFile'] ['type'];
// Sprawdź typ pliku i rozmiar pliku
if ($ fileType == 'Image/jpeg' && $ filesize < 300000)

// Skonfiguruj ścieżkę pliku przesyłania
$ filepath = dirname (__ plik__).„/przesyła/”.$ nazwa pliku;
// Prześlij plik za pomocą funkcji Move_upload_File ()
if (Move_uploaded_file ($ filetEmppath, $ filepath))

// Wydrukuj komunikat sukcesu
Echo '

Plik jest przesłany pomyślnie.

';;

w przeciwnym razie

// Wydrukuj komunikat o błędzie
Echo '

Błąd przesyłanie pliku.
'. $ _Files ['uploadFile'] ['błąd']. '

';;


w przeciwnym razie
// Wydrukuj komunikat o błędzie
Echo '

Typ lub rozmiar pliku nie jest obsługiwany.

';;

w przeciwnym razie

// Wydrukuj komunikat o błędzie
Echo '

Błąd przesyłanie pliku.
'. $ _Files ['uploadFile'] ['błąd']. '

';;

obejmować („uploadform.html ');

w przeciwnym razie
obejmować („uploadform.html ');
?>

Wyjście
W następnym wyjściu, kwiat.png Wybrano plik, który nie jest plik JPEG:

Następujące wyjście pojawi się po naciśnięciu Wgrywać przycisk:

Tutaj kwiat1.Plik JPEG został wybrany, który jest plik JPEG.

Teraz następujące wyjście pojawią się po naciśnięciu Wgrywać przycisk:

Przykład 3: Sprawdź plik przed przesłaniem

Utwórz plik PHP z następującym skryptem, który używa is_uploaded_file () funkcja, aby sprawdzić, czy plik jest przesyłany przez post HTTP przed przesunięciem pliku do serwera. Skrypt prześle tylko plik tekstowy i wydrukuje zawartość pliku tekstowego po pomyślnym przesłaniu pliku.

// Sprawdź, czy jakikolwiek plik jest wybrany, czy nie
if (isset (pliki $ _ ['uploadFile'])))

// Przeczytaj oryginalną nazwę pliku
$ filename = $ _files ['uploadFile'] ['name'];
// Przeczytaj tymczasową nazwę pliku
$ filetemppath = $ _files ['uploadFile'] ['tmp_name'];
// odczytał typ pliku
$ fileType = $ _files ['uploadFile'] ['type'];
// Skonfiguruj ścieżkę pliku przesyłania
$ filepath = dirname (__ plik__).„/przesyła/”.$ nazwa pliku;
// Sprawdź typ pliku
if ($ fileType == 'Text/Plain')

// Sprawdź wszelkie błąd przesyłania, czy nie
if ($ _files ['uploadfile'] ['error'] === upload_err_ok)

if (is_uploaded_file ($ filetEmppath))
// Prześlij plik za pomocą funkcji Move_upload_File ()
if (Move_uploaded_file ($ filetEmppath, $ filepath))

// Wydrukuj komunikat sukcesu
Echo $ nazwa pliku .„jest pomyślnie przesłany.
";
echo „Treść pliku:
";
ReadFile ($ filepath);

w przeciwnym razie

Echo „Błąd przesyłanie pliku.
'. $ _Files ['uploadFile'] ['error'];


w przeciwnym razie
plik echo „nie jest przesłany.";



w przeciwnym razie
Echo „Plik nie jest plik tekstowym.";

w przeciwnym razie

?>




Przesyłanie pliku za pomocą PHP



Wybierz plik:




Wyjście
W następnym wyjściu wybrano plik tekstowy do przesłania:

Treść pliku została wyświetlona na wyjściu po pomyślnym przesłaniu pliku.

Wniosek

Zadanie przesyłania pliku jest powszechnym wymogiem dla każdej aplikacji internetowej. Zastosowania zmiennej przesyłania pliku i wbudowanych funkcji PHP zostały pokazane w tym samouczku za pomocą wielu przykładów przesyłania plików. Jeśli chcesz, możesz przesłać więcej niż jeden plik na raz, używając skryptu PHP, który jest omawiany w tym samouczku. Możesz także przesłać folder zawierający wiele plików za pomocą skryptu PHP.