Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz - upload więcej niż 1 pliku
Forum PHP.pl > Forum > Przedszkole
maZat
Witam,
stworzyłem sobie formularz za pośrednictwem którego można wrzucić jeden, dwa lub trzy pliki na serwer
oto fragment:

<input type="hidden" name="MAX_FILE_SIZE" value="2048000" />
<input name="plik1" type="file" /><br>
<input name="plik2" type="file" /><br>
<input name="plik3" type="file" /><br>

kod główny sprawdzający czy są załączniki i jeśli tak to uruchamia funkcje ZALACZNIKI_SPR() która zwraca tylko nazwę pliku:
CODE

if ($_FILES['plik1']['tmp_name'] != "") { $plik1=zalaczniki_spr('plik1'); }
if ($_FILES['plik2']['tmp_name'] != "") { $plik2=zalaczniki_spr('plik2'); }
if ($_FILES['plik3']['tmp_name'] != "") { $plik3=zalaczniki_spr('plik3'); }
print("Dane dodane z plikami: $plik1, $plik2, $plik3");


oto kod tej funkcji:
CODE

function zalaczniki_spr($pliczek) {
$plik_tmp = $_FILES[$pliczek]['tmp_name'];
$plik_nazwa = $_FILES[$pliczek]['name'];

if(is_uploaded_file($plik_tmp)) {
global $fo_nazwa; // tutaj dodaje do nazwy pliku wartosc innego pola formularza - cel - unikatowa nazwa pliku
$plik_nazwa = $fo_nazwa.'_'.$plik_nazwa;

// tutaj nudny kod poprawiajacy nazwe pliku
$plik_nazwa = strtolower($plik_nazwa);
$plik_nazwa = str_replace("ż","z",$plik_nazwa);
$plik_nazwa = str_replace(chr(177),"a",$plik_nazwa);
$plik_nazwa = str_replace(" ","_",$plik_nazwa);
$plik_nazwa = str_replace(chr(182),"s",$plik_nazwa);
$plik_nazwa = str_replace("ć","c",$plik_nazwa);
$plik_nazwa = str_replace(chr(188),"z",$plik_nazwa);
$plik_nazwa = str_replace("ó","o",$plik_nazwa);
$plik_nazwa = str_replace("ł","l",$plik_nazwa);
$plik_nazwa = str_replace("ń","n",$plik_nazwa);

$sciezka = $_SERVER['DOCUMENT_ROOT']."upload/";

// tutaj kod który znajduje rozszerzenie pliku
$dlugosc = strlen($plik_nazwa);
$j = 1;
while ($nzw_pliku==""):
$find_dot = substr($plik_nazwa, -$j, 1);
if($find_dot==".")
{ $nzw_pliku = substr($plik_nazwa, 0, $dlugosc-$j);
$rozszerzenie = substr($plik_nazwa, -$j+1, $j);
}
else
{ $j++; }
endwhile;

// sprawdzenie czy rozszerzenie jest OK
if($rozszerzenie != "exe" && $rozszerzenie != "com" && $rozszerzenie != "reg" && $rozszerzenie != "bat" && $rozszerzenie != "scr" && $rozszerzenie != "pif" && $rozszerzenie != "cmd" && $rozszerzenie != "vbs")
{ $dosprawdzenia = $sciezka;
$dosprawdzenia .= $plik_nazwa;
$i = 0;
while (file_exists($dosprawdzenia)):
$i++;
$nzw_pliku .=$i;
$dosprawdzenia = $sciezka;
$dosprawdzenia .= $nzw_pliku;
$dosprawdzenia .= ".";
$dosprawdzenia .= $rozszerzenie;

$plik_nazwa = $nzw_pliku;
$plik_nazwa .= ".";
$plik_nazwa .= $rozszerzenie;
endwhile;
// i końcóweczka, gdy wszystko co było wyżej jest OK

move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
return $plik_nazwa;
}
else
{ print("Niedozwolone rozszerzenie pliku."); }
}
}


no i co za problem mam smile.gif od razu mówie że ten kod działa wzorowo gdy dodaje
- 1 plik o wadze np. 200kb
- lub gdy dodaje 3 małe pliki o wadze 2kb smile.gif

ale gdy dodaje 2/3 pliki o wadze okolo 200kb każdy, wtedy po kliknieciu na submit - czekam czekam.. i pojawia sie spowrotem formularz, a pliki nie sa wgrane

co jest zle??

pozdrawiam i bardzo prosze o pomoc!

PS. wartość MAX_FILE_SIZE dotyczy wszystkich plików? czy każdego z osobna?
-
Chyba nie ale moge sie mylic.
Cezar708
wg tego upload_max_filesize dotyczy tylko pojedynczego pliku (nie ma wzmianki o sumie całkowitej wielu plików) . Jednakże jeszcze jest jeden parametr w php.ini warty zaznaczenia. Jest to post_max_size. Sprawdź, czy czasem tej wartości nie przekroczyłeś!

Pozdrawiam.

PS: Poza tym
Cytat
  1. <input type="hidden" name="MAX_FILE_SIZE" value="2048000" />

to tylko i wyłącznie Twoja zmienna a nie żadna dyrektywa php.ini, więc jak jej użyjesz to Twoja sprawa.
maZat
uzywam serwera darmowego lycos.co.uk
znalazlem w info ze jest
post_max_size 512000
czyli 0,5mb.. wszystko jasne..

tylko teraz pytanko mam takie, czy da sie zrobic w jednym formularzu taki myk
zeby to maxsize tyczyl sie tylko jednego pola input file

bo teraz to ewidentnie wszystkie pliki co wrzucam są sumowane i sprawdzane z wartościa maxsize..

a co do tego mojego pola
<input type="hidden" name="MAX_FILE_SIZE" value="2048000" />
to chyba faktycznie wzorowalem sie na jakims formularzu i myslalem ze to jest jakas funkcja restrykcji wielkosci pliku..
pozdrawiam
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.