Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z uploadem zdjec - dziala ale nie kazdemu...
Forum PHP.pl > Forum > Gotowe rozwiązania
Rafix24
Witam,
Mam problem (a moze i problemu nie ma...) z uploadem zdjec polaczonym z generowaniem miniaturek.
Skrypt dzialal u mnie lokalnie, jak wrzucilem go na serwer to rowniez JA nie mam z nim klopotow - jednak aby upewnic sie ze wszystko gra poprosilem kolege zeby sprawdzil jak jemu to dziala i ... tu wielkie zdziwienie - jemu skrypt nie dziala. Nie wyswietlaja sie zadne komunikaty z bledami (ze zdjecie jest za duze, czy nie ten format pliku) - nie pokazuje nawet pierwszego komunikatu ze plik zostal zrzucony na serwer. Wszystko wyglada tak, jakby w ogole zdjecie nie bylo przesylane na serwer. Kolega twierdzi ze cos tam wysyla ale po wykonaniu sie calego skryptu strona sie nie zmienia tzn. nie dodaje sie zadne zdjecie ani nie ma zadnych komunikatow.

Sam nie moge tego sprawdzic, bo mi wszystko dziala. Analizowalem kod ale zadnych bledow wskazujacych na ten problem nie widze.
Stad mam do Was prosbe - moglibyscie zobaczyc gdzie moze byc blad, bo ja na prawde juz nic nie widze...

Wyciety kod odpowiedzialny za obsluge uploadowanych zdjec:
[php:1:3871640016]<?php
if (($type == 'image/jpg') or ($type == 'image/jpeg')) {

$folder="/obrazki/";
$uploaddir = $_SERVER['DOCUMENT_ROOT'].($folder);

$rand = md5(uniqid(mt_rand()));
$_FILES['userfile']['name'] = $rand.'.jpg';
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
echo"plik zostal zrzucony na serwer<br>";

}else{echo"Plik NIE ZOSTAL zrzucony na serwer! <br>";}
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$_FILES['userfile']['name']))
{

} else {
print "Kopiowanie zakończone <b>porażka</b>!"; }


$size = GetImageSize($uploaddir.$_FILES['userfile']['name']);
$width = $size[0];
$height = $size[1];


// POCZATEK TWORZENIA MINIATURKI
if (($width > '120' and $height >'90') or ($width > '68' and $height >'90')) {

if ($width > $height) {
if (!$max_width) $max_width = 120; // max szerokosc miniaturki
if (!$max_height) $max_height = 90; // max wysokosc miniaturki
$typ = 'poz';
} else {
if (!$max_width) $max_width = 68; // max szerokosc miniaturki
if (!$max_height) $max_height = 90; // max wysokosc miniaturki
$typ = 'pion';
}

$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;

if ( ($width <= $max_width) && ($height <= $max_height) ) {
$tn_width = $width;
$tn_height = $height;
}
else if (($x_ratio * $height) < $max_height) {
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
}
else {
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}

$src = ImageCreateFromJpeg($uploaddir.$_FILES['userfile']['name']);
$dst = ImageCreateTrueColor($tn_width,$tn_height);

ImageCopyResampled ($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);

$dopisz = "m_"; //do miniaturki dopisze m_nazwapliku.jpg

ImageJpeg ($dst, $uploaddir.$dopisz .$_FILES['userfile']['name']);
// KONIEC TWORZENIA MINIATURKI

$zdj_m = $dopisz.$_FILES['userfile']['name'];

}else {echo "<p align=center class='info> Wielko?ć tego zdjęcia jest za mała!</p>"; }



// POCZATEK TWORZENIA MAX
if (($width > '640' and $height >'480') or ($width > '480' and $height >'640')) {

if ($width > $height) {
if (!$max_width1) $max_width1 = 640; // max szerokosc max
if (!$max_height1) $max_height1 = 480; // max wysokosc max
$typ = 'poz';
} else {
if (!$max_width1) $max_width1 = 480; // max szerokosc max
if (!$max_height1) $max_height1 = 640; // max wysokosc max
$typ = 'pion';
}

$x_ratio = $max_width1 / $width;
$y_ratio = $max_height1 / $height;

if ( ($width <= $max_width1) && ($height <= $max_height1) ) {
$tn_width = $width;
$tn_height = $height;
}
else if (($x_ratio * $height) < $max_height1) {
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width1;
}
else {
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height1;
}

$src = ImageCreateFromJpeg($uploaddir.$_FILES['userfile']['name']);
$dst = ImageCreateTrueColor($tn_width,$tn_height);

ImageCopyResampled ($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);

ImageJpeg ($dst, $uploaddir.$_FILES['userfile']['name']);

$width=$max_width1;
$height=$max_height1;
// KONIEC TWORZENIA MAX

$zdj = $_FILES['userfile']['name'];

}else {$zdj = $_FILES['userfile']['name'];}



}else { echo "<p align=center class='info>Ten typ pliku nie jest obslugiwany :-(<br></p>"; }

?>[/php:1:3871640016]

Formularz za pomoca ktorego przekazywane jest zdjecie :

Kod
<form enctype="multipart/form-data" action="admin.php?w=2&spr=1" method="post">

<input type="hidden" name="MAX_FILE_SIZE" value="3000000">

Wybierz zdjęcie: &nbsp; &nbsp;<input name="userfile" type="file">

&nbsp; <input type="submit" value="OK">

</form>


Bede wdzieczny za podpowiedzi smile.gif
Bora
sprawdż w IE.
Ja używam Mozille i też sie zdziwiłem gdy mój kod nie działał.
Okazało sie że IE nie przesyła $_FILES['mime'].
Sprawdż może wina przeglądarki.
Rafix24
Bora, to faktycznie moze byc wina przegladarki bo ja sprawdzalem na operze i netscape, a kolega uzywa IE - Co nalezy zmienic by ten skrypt dzialal rowniez w IE questionmark.gif?
Bora
[php:1:7a00c66157]<?php
if (($type == 'image/jpg') or ($type == 'image/jpeg')) {
?>[/php:1:7a00c66157]
nie wiem skąd to bierzesz ale chyba własnie z mime.
Sprawdzaj po rozszerzeniu pliku
Rafix24
biore to z :
[php:1:b7894fbdcf]<?php
$type = $_FILES['userfile']['type'];
?>[/php:1:b7894fbdcf]

Z tego co zauwazylem to wiekszosc tego typu skryptow, takze na tym forum, sprawdza typ obrazka wlasnie w taki sposob.
Jak moge zrobic to inaczej? Moze jakis kod questionmark.gif? 8)
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-2024 Invision Power Services, Inc.