Mam na swojej stronie upload zdjęć w formacie JPEG. Wszystko działa poprawnie w przeglądarce FF (plik zostaje wysłany, ma zmniejszony rozmiar i wywala mi miniaturkę zdjęcia). Natomiast pod IE i Operą każdy plik, nawet ten poprawny, nie przechodzi przez walidację, przez co zwraca mi komunikat o błędzie typu pliku. Metoda walidująca to:
Kod
public function walidacja_foto($foto, $tablica_bledow, $MAX_FILE_SIZE)
{
if($foto['foto']['error'] > 0)
{
if($foto['foto']['error']==1)
{
return $tablica_bledow['foto_size']; //jesli wielkosc przekracza limit w php.ini
}
elseif($foto['foto']['error']==2)
{
return $tablica_bledow['foto_size']; //jesli wielkosc przekracza MAX_FILE_SIZE w formularzu
}
elseif($foto['foto']['error']==3)
{
return $tablica_bledow['czesciowo']; //jesli wyslano plik czesiowo (blad przesylania)
}
elseif($foto['foto']['error']==4)
{
return $tablica_bledow['nie_wyslany']; //jesli zaden plik nie zostal wyslany (pusty form.)
}
}
elseif($foto['foto']['type'] != 'image/jpeg')
{
return $tablica_bledow['typ']; //jesli nie zgadza sie MIME
}
elseif($foto['foto']['size'] > $MAX_FILE_SIZE)
{
return $tablica_bledow['foto_size']; //jesli wielkosc wieksza od limitu
}
elseif ($this->czy_wiekszy($foto, $max_y="1024", $max_w="1280", $parametry))
{
return $tablica_bledow['parametry']; //jesli zbyt duze parametry
}
elseif($this->czy_mniejszy($foto, $max_y="350", $max_w="350", $parametry))
{
return $tablica_bledow['parametry_male'];
}
}
{
if($foto['foto']['error'] > 0)
{
if($foto['foto']['error']==1)
{
return $tablica_bledow['foto_size']; //jesli wielkosc przekracza limit w php.ini
}
elseif($foto['foto']['error']==2)
{
return $tablica_bledow['foto_size']; //jesli wielkosc przekracza MAX_FILE_SIZE w formularzu
}
elseif($foto['foto']['error']==3)
{
return $tablica_bledow['czesciowo']; //jesli wyslano plik czesiowo (blad przesylania)
}
elseif($foto['foto']['error']==4)
{
return $tablica_bledow['nie_wyslany']; //jesli zaden plik nie zostal wyslany (pusty form.)
}
}
elseif($foto['foto']['type'] != 'image/jpeg')
{
return $tablica_bledow['typ']; //jesli nie zgadza sie MIME
}
elseif($foto['foto']['size'] > $MAX_FILE_SIZE)
{
return $tablica_bledow['foto_size']; //jesli wielkosc wieksza od limitu
}
elseif ($this->czy_wiekszy($foto, $max_y="1024", $max_w="1280", $parametry))
{
return $tablica_bledow['parametry']; //jesli zbyt duze parametry
}
elseif($this->czy_mniejszy($foto, $max_y="350", $max_w="350", $parametry))
{
return $tablica_bledow['parametry_male'];
}
}
Kod formularza:
Kod
<form action="/zdjecia/wyslij/" method="post" enctype="multipart/form-data">
<label class="label">Wybierz zdjęcie:</label><br>
<input name="foto" type="file"><br>
<input src="/images/zmien_e-mail.gif" alt="Rejestracja " title="Zarejestruj teraz!" type="image"><br>
<input name="MAX_FILE_SIZE" value="524288" type="hidden">
<input name="submit" type="hidden"><br>
</form>
<label class="label">Wybierz zdjęcie:</label><br>
<input name="foto" type="file"><br>
<input src="/images/zmien_e-mail.gif" alt="Rejestracja " title="Zarejestruj teraz!" type="image"><br>
<input name="MAX_FILE_SIZE" value="524288" type="hidden">
<input name="submit" type="hidden"><br>
</form>
Dlaczego pod IE i Operą upload nie działa?