Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Upload plików
Forum PHP.pl > Forum > Przedszkole
Pjotrek80
Mam dziwny problem z uploadem plików.
Jeżeli wgrywam plik o troszkę większym rozmiarze niż MAX_FILE_SIZE (1MB) to prawidłowo zgłasza błąd UPLOAD_ERR_FORM_SIZE.
Jeżeli natomiast wgrywam plik 11MB to nic się nie dzieje. Nic nie wyświetla nawet var_dump tablicy $_FILES, jakby w ogóle nic nie przechodziło przez formularz.
Ktoś spotkał się z czymś takim? Albo może domyślać się o co chodzi?
widmo_91
Umieść w dowolnym miejscu skryptu:

  1. echo ini_get("post_max_size")."\n";


Zapewne wyskoczy wartość 8M, jest to maksymalna wartość jaką możesz wysłać postem więc musisz zmienić w php.ini lub .htaccess tą wartość.
Pjotrek80
Cytat(widmo_91 @ 26.06.2013, 00:43:21 ) *
Umieść w dowolnym miejscu skryptu:

  1. echo ini_get("post_max_size")."\n";


Zapewne wyskoczy wartość 8M, jest to maksymalna wartość jaką możesz wysłać postem więc musisz zmienić w php.ini lub .htaccess tą wartość.


Tak pokazuje 8MB ale czy nie powinien wyskoczyć błąd UPLOAD_ERR_INI_SIZE ?
widmo_91
UPLOAD_ERR_INI_SIZE pokazuję czy wrzucony plik przekroczył inną wartość: upload_max_filesize.
Aby wysłać prawidłowo plik post_max_size i upload_max_filesize muszą być większe niż wrzucany plik.
Pjotrek80
Cytat(widmo_91 @ 26.06.2013, 01:03:39 ) *
UPLOAD_ERR_INI_SIZE pokazuję czy wrzucony plik przekroczył inną wartość: upload_max_filesize.
Aby wysłać prawidłowo plik post_max_size i upload_max_filesize muszą być większe niż wrzucany plik.

Zgadza się, ale chodzi mi o to, że jak załaduje większy plik to powinie wyskoczyć jeden z błędów (1 - UPLOAD_ERR_INI_SIZE, lub 2- UPLOAD_ERR_FORM_SIZE),
a jak pisałem wcześniej, w przypadku pliku znacznie przekraczającego te ograniczenia nie pokazuje się żaden z wymienionych komunikatów o błędzie.
widmo_91
Cytat
UPLOAD_ERR_INI_SIZE
Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.

UPLOAD_ERR_FORM_SIZE
Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.


1. Twój plik nie przekroczył wartości upload_max_filesize.
2. MAX_FILE_SIZE to zabezpieczenie po stronie SERWERA a post_max_size jest po stronie klienta. Klient czyli Twoja(i innych) przeglądarka zabrania wysyłania większych danych przez formularz, dlatego po przekroczeniu wartości post_max_size nie wyskoczy Ci błąd MAX_FILE_SIZE!
Pjotrek80
Cytat(widmo_91 @ 26.06.2013, 09:24:38 ) *
1. Twój plik nie przekroczył wartości upload_max_filesize.
2. MAX_FILE_SIZE to zabezpieczenie po stronie SERWERA a post_max_size jest po stronie klienta. Klient czyli Twoja(i innych) przeglądarka zabrania wysyłania większych danych przez formularz, dlatego po przekroczeniu wartości post_max_size nie wyskoczy Ci błąd MAX_FILE_SIZE!

OK, to jak w takim razie to sprawdzić i wypisać odpowiedni komunikat w takim przypadku?
widmo_91
Cytat
If the size of post data is greater than post_max_size, the $_POST and $_FILES superglobals are empty. This can be tracked in various ways, e.g. by passing the $_GET variable to the script processing the data, i.e. <form action="edit.php?processed=1">, and then checking if $_GET['processed'] is set.


Źródło: manual/en/ini.core.php#ini.enable-post-data-reading

Możesz też skorzystać np. ze zmiennej $_SERVER['HTTP_REFERER'], jak napisali w manualu jest kilka sposobów aby to sprawdzić.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.