Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzanie rozmiaru najcięższego uploadowanego pliku
Forum PHP.pl > Forum > Przedszkole
d0m1n1k_
Witam,

jak powinna wyglądać pętla sprawdzająca czy którykolwiek z wysyłanych na serwer plików nie przekracza wyznaczonego limitu?
Mowa oczywiście o PHP.

Osobiście próbuję z następującą konstrukcją ale na chwilę jeszcze nie "styka" ;-/
  1. $max_file_size = 512*1024;
  2.  
  3. foreach ($_FILES['files']['size'] as $s => $sizze) {
  4. if ($_FILES['files']['size'][$s] > $max_file_size) {
  5. echo "jest pięknie i lecimy dalej z uploadem";
  6. //--> Kod uploadu (pokazany niżej) <--//
  7. }
  8. }


  1. foreach ($_FILES['files']['name'] as $f => $name) {
  2. if ($_FILES['files']['error'][$f] == 4) {
  3. continue; // Pomin jesli sa bledy
  4. }
  5. if ($_FILES['files']['error'][$f] == 0) {
  6. if ($_FILES['files']['size'][$f] > $max_file_size) {
  7. $message[] = "$name jest za duzy!.";
  8. continue; // Nie dla duzych plikow
  9. }
  10. elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
  11. $message[] = "$name ma zly format";
  12. continue; // Nie dla nie zdjec
  13. }
  14. else{
  15. if($count <= 9){ //Działa to działamy. I działamy do 10 pliku włącznie.
  16. $rozszerzenie = pathinfo($_FILES["files"]["name"][$f], PATHINFO_EXTENSION);
  17. $newnamee = date('YmdHis') . md5(md5(rand(1,9999999))) . "." . $rozszerzenie;
  18. if(move_uploaded_file($_FILES['files']['tmp_name'][$f], $path.$newnamee))
  19. $newnamss[$count] = array($count => $newnamee);
  20. $count++;
  21. }
  22. }
  23. }
  24. }
fate
lecisz dalej z uploadem jak przekroczy $maxfilesize?
d0m1n1k_
Cytat(fate @ 25.11.2014, 21:30:44 ) *
lecisz dalej z uploadem jak przekroczy $maxfilesize?


Nie do końca rozumiem.
Więc powiem swoimi słowami:
Pliki spełniające $maxfilesize lecą dalej, nawet gdy kilka odpadło - ale nie mam informacji zwrotnej która by o tym mówiła.
Ale gdy prześlę tylko takie pliki, które nie spełniają warunku $maxfilesize (np. trzy pliki po 1MB każdy), to mimo nie uploadowania reszta procedury idzie dalej i dodaje wpis bez zdjęć - a tego m.in. chcę uniknąć.
Daimos
Cytat(d0m1n1k_ @ 26.11.2014, 14:18:25 ) *
Nie do końca rozumiem.
Więc powiem swoimi słowami:
Pliki spełniające $maxfilesize lecą dalej, nawet gdy kilka odpadło - ale nie mam informacji zwrotnej która by o tym mówiła.
Ale gdy prześlę tylko takie pliki, które nie spełniają warunku $maxfilesize (np. trzy pliki po 1MB każdy), to mimo nie uploadowania reszta procedury idzie dalej i dodaje wpis bez zdjęć - a tego m.in. chcę uniknąć.

Po wykonaniu pętli, sprawdź swoje $count (bo rozumiem zwiększasz to tylko w tym miejscu, przy udanym uploadzie) i tyle
fate
if ($_FILES['files']['size'][$s] > $max_file_size) {
tutaj wpuszczasz tylko pliki WIEKSZE niz 512

if ($_FILES['files']['size'][$f] > $max_file_size) {
$message[] = "$name jest za duzy!.";

tutaj drukujesz info

elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
$message[] = "$name ma zly format";
continue; // Nie dla nie zdjec
}
else{
if($count <= 9){ //Działa to działamy. I działamy do 10 pliku włącznie.
$rozszerzenie = pathinfo($_FILES["files"]["name"][$f], PATHINFO_EXTENSION);
$newnamee = date('YmdHis') . md5(md5(rand(1,9999999))) . "." . $rozszerzenie;
if(move_uploaded_file($_FILES['files']['tmp_name'][$f], $path.$newnamee))
$newnamss[$count] = array($count => $newnamee);
$count++;

to ci sie nie wykonuje, czy nie tak?
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.