Autor | Zpráva | ||
---|---|---|---|
bestik_63 Profil |
#1 · Zasláno: 27. 3. 2016, 22:20:43
ahoj,
měl bych dotaz. Snažím se o upload souboru z HTML formuláře a chtěl bych ošetřit případ, kdy uživatel zadá příliš velký soubor než je nastaveno v php.ini. Uvedu příklad. post_max_size = 8M upload_max_filesize = 4M pokud načtený soubor je 4M-8M, tak tuto větší velikost lze zjistit z $_FILES['jmeno']['error']. S tím by neměl být problém. Nicméně pokud bude načtený soubor větší než 8M, tak pole $_FILES = null. Pokud chci tedy zdetekovat soubor větší než 8M, musím to buď ošetřit javascriptem nebo do formuláře můžu přidat skrytou proměnnou <input type="hidden" name="upload_file"> a v php pak dám podmínku: if((isset($upload_file))and(isset($_FILES))){ if($_FILES == null){ //soubor je příliš velký } } |
||
RastyAmateur Profil |
#2 · Zasláno: 27. 3. 2016, 22:56:06
bestik_63:
Přečti si dokumentaci všech error hlášek. Ten error najdeš v $_FILES["name_of_input"]["error"] . Konkrétně tvůj dotaz:
if($_FILES["file"]["error"] == 1){ die("Přesáhl jste maximální velikost souboru!"); } |
||
Tomáš123 Profil |
#3 · Zasláno: 27. 3. 2016, 23:40:58
RastyAmateur:
„Přečti si dokumentaci“ Prečítaj si ešte raz otázku... bestik_63: Ak chceš detekovať obdržanie formulára, kontroluj „nastavenosť“ mena odosielacieho input u.
if(isset($_POST['submit'])) Niečo som našiel aj na Stack Overflowe: „It's not obvious how to recognize going over post_max_size . $_POST and $_FILES will be empty, but $_SERVER['CONTENT_LENGTH'] will be > 0. If the client just didn't upload any post variables or files, then $_SERVER['CONTENT_LENGTH'] will be 0.“
Použiteľný návrh obsahuje aj php.net. |
||
bestik_63 Profil |
#4 · Zasláno: 28. 3. 2016, 14:01:56
RastyAmateur:
ahoj, manuál jsem si přečetl a proto jsem psal, že s tím nemám problém. Zajímala mě spíše ta otázka, když ta velikost bude větší než je možné přenést přes POST. Na to mi odpověděl víceméně Tomáš123. Takže moc děkuji. Víceméně to co jsem psal prve je asi nejschůdnější řešení. Pokud teda někdo nenapíše, že se to dá řešit elegantnějším způsobem :-) |
||
Časová prodleva: 7 let
|
0