W pewnym momencie kariery będziesz chciał stworzyć prawdziwe dynamiczne aplikacje internetowe. Może zdecydujesz się napisać swoją sieć społecznościową. Jako programista postarają się zainteresować użytkowników, dać im możliwość przesyłania zdjęć, muzyki i udostępniania plików. W tym przypadku musisz znać i być w stanie pracować z funkcją upload przesłanego pliku PHP.
Formularz do gromadzenia danych
enctype = "wieloczęściowe /dane formularza" & gt;
Zwróć uwagę na atrybut enctype = "multipart /form-data". To dzięki niemu formularz jest skonfigurowany do odbierania danych. Aby użytkownicy nie wymyślili 25 MB bootloadów, w ukrytym polu musisz koniecznie ustawić limit rozmiaru dla zdjęć. W przypadku zdjęcia profilowego wystarczy 2 MB, jak w tym przykładzie.
& lt ;! - fb_336x280_2 - & gt;
& lt; skrypt & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
Wysyłanie obrazu
Powyższy formularz w akcie atrybutów oznacza, że odbiór iprzetwarzanie obrazu odbędzie się w tym samym dokumencie. Jeśli jesteś zdezorientowany i chcesz, że dla każdego działania miał oddzielny skrypt zastąpić nazwę projektu scenariusza, na przykład, create_profile.php. Teraz w tym pliku zapisany jest cały kod, w tym funkcja przesłanego pliku PHP move.
"Maks. rozmiar pliku określony w php.ini ',
2 = & gt; Max przekroczony rozmiar pliku określony w formularzu HTML ",
3 = & gt; "Wysłano tylko część pliku",
4 = & gt; "Plik do wysłania nie został wybrany.");
//sprawdza błędy podczas wysyłania pliku
($ _FILES [$ image_fieldname] ['error'] == 0) lub
die ("Błąd wysyłania pliku". $ Php_errors [$ _ FILES [$ image_fieldname ] ['error']]);
//sprawdza normalny plik jest wysyłany lub próbą złamania
@is_uploaded_file ($ _ FILES [$ image_fieldname] ['tmp_name']) lub
die ('ty sovershyete niemoralności wstyd! „. Po pierwsze plik: "." '{$ _ FILES [$ nazwa_obrazu] [' nazwa_tmp ']}' ');
//Czy proponowana plik obrazu
@getimagesize ($ _ FILES [$ image_fieldname] ['tmp_name']) or die ("Błąd! Wybrany plik nie jest obrazem." „Infomacje {$ _FILES [$ image_fieldname] ['tmp_name']} ");
//Przypisywanie pliku unikalnej nazwy do pobrania
$ now = time ();
, natomiast (file_exists ($ upload_filename = $ uploads_dir $ teraz .'- '[nazwa „]). $ _ Plików [$ image_fieldname]'). {
$ teraz ++;
}
? & Gt;
,
kodu nie są zmienne pomocnicze,
Związek pośredni scenariusz type = "text /JavaScript" & gt;
zmienna blockSettings2 = {blockID "R-A-271049-5" renderTo "yandex_rtb_R-A-70350-39" asynchroniczny :! 0};
jeśli (document.cookie.indexOf ("abmatch =") i GT = 0) blockSettings2.statId = 70350;
! Zastosowanie (a, b, c, d, e) {A [c] = A [c] || [] A [c] .Push (funkcja () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("scenariusz")d = b.createElement ("scenariusz") d.type = "text /JavaScript" d.src = „//an.yandex .ru /System /context.js "d.async = 0e.parentNode.insertBefore (d, e)} (to this.document," yandexContextAsyncCallbacks „);
- $ Upload_dir jest zarejestrowaną ścieżkądo katalogu do pobrania. Zamiast HOSW_WWW_ROOT, wpisz bezwzględną ścieżkę do katalogu roboczego na serwerze lub komputerze.
- Zmienna $ image_fieldname to nazwa pola obrazu w formularzu HTML.
Jak widać, przed przejściem do pliku przesyłania, istnieją wiersze sprawdzające pobrany obraz. Oczywiście bezpieczne aplikacje PHP są mitem, ale powinna istnieć przynajmniej minimalna ochrona.
Tablica sprawdzania błędów $ php_errors nie rozpoczyna się od zera, ale od jednostki. Pod indeksemznajduje się $ _FILES [$ image_fieldname] ['error'], które w przypadku pomyślnego załadowania zwraca liczbę 0. W PHP $ _FILES jest specjalną tablicą zawierającą wszystkie informacje o pliku. Aby uzyskać dostęp do tych danych za pomocą pola wprowadzania kodu nazwą że przyniósł jako oddzielny zmiennej $ image_fieldname
Związek pośredni skryptu type = „text /JavaScript” & gt;
zmienna blockSettings3 = {blockID "R-A-271049-6" renderTo "yandex_rtb_R-A-70350-44" asynchroniczny :! 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings3.statId = 70350;
! Zastosowanie (a, b, c, d, e) {A [c] = A [c] || [] A [c] .Push (funkcja () {Ya.Context.AdvManager.render (blockSettings3)}), e = b.getElementsByTagName ("scenariusz")d = b.createElement ("scenariusz") d.type = "text /JavaScript" d.src = „//an.yandex .ru /System /context.js "d.async = 0e.parentNode.insertBefore (d, e)} (to this.document," yandexContextAsyncCallbacks „);
//sprawdza błędy podczas wysyłania pliku
($ _FILES [$ image_fieldname] ['error'] == 0) lub
die ("Błąd wysyłania pliku". $ Php_errors [$ _FILES [$ image_fieldname] ['error']]);
Kiedy przenoszenie przesłanego pliku PHP nie działa
Czy uważasz, że zrobiłeś wszystko dobrze, a tłumacz popełnia błąd? Plik odmawia uruchomienia w wyznaczonym katalogu i pojawia się w zupełnie nieoczekiwanych miejscach? Przede wszystkim sprawdź php.ini pod kątem dozwolonego rozmiaru w parametrze upload_max_filesize. Najczęściej jest to błądwystępuje w Denver. Tak więc otwórz plik php.ini (zazwyczaj znajduje się on w folderze php) i ustaw żądany rozmiar:
;;;;;;;;;;;;;;
; Przesyłanie plików;
;;;;;;;;;;;;;;
; Określa, czy zezwalać na przesyłanie plików HTTP.
; http://php.net/file-uploads
file_uploads = Włącz
; Katalog tymczasowy dla przesłanych plików HTTP (użyje domyślnego systemu, jeśli nie
;
; http://php.net/upload-tmp-dir
upload_tmp_dir = "***"
; Maksymalny dozwolony rozmiar dla przesłanych plików.
; http://php.net/upload-max-filesize
upload_max_filesize = 5M
; Max_file_uploads = 50
Jeśli pracujesz na serwerze, zapytaj dostawcę, którego pliki mogą pobierać. W przypadku darmowego hostingu maksymalna kwota wynosi zwykle 2 MB. Drugim powodem, dla którego kod może się nie powieść, jest ustawienie niewłaściwego katalogu. Sprawdź drugi argument move_uploaded_file, musi zawierać ścieżkę i koniecznie nazwę.