Autor Zpráva
KOŽAK
Profil *
zdravicko, mam jednoduchy skript na posilani souboru na server zaroven s ukladanim do databaze ale ted bych jeste potreboval aby se mi ulozil ten soubor(obrazek) a zaroven s nim ten samy obrazek do jine slozky(miniatury) uz se s tim od rana peru ale porad se nejak nedari, tak mne napadlo jestli je to vubec mozne a kdyztak jak na to poradi nekdo??

tady je muj skript:if (isset($_POST['odeslat'])) { // Zpracovat formulář.


// Zkontrolovat název souboru (nepovinný).
if (is_uploaded_file ($_FILES['nazev_souboru']['tmp_name'])) {
if (move_uploaded_file($_FILES['nazev_souboru']['tmp_name'], "../prijato/{$_FILES['nazev_souboru']['name']}")) { // Přenést soubor.

echo '<p>Soubor byl přenesen!</p>';

} else { // Soubor nelze přenést.
echo '<p><font color="red">Soubor nelze přenést.</font></p>';
$soub = '';
}
$soub = $_FILES['nazev_souboru']['name'];
} else {
$soub = '';
}


$dotaz = "insert into zbozi(nazev,popis,cena,obrazek,datvloz,objcsl,druh)VALUES('$n','$p','$ c','$soub',NOW(),'$objcsl','$druh')";
$vysledek=mysql_query($dotaz);
}
Nox
Profil
http://cz.php.net/manual/en/ref.image.php
http://www.phpit.net/article/image-manipulation-php-gd-part2/
KOŽAK
Profil *
dikes ale tohle mi moc nepomohlo, neni nekde neco dobre vysvetlene cesky?
Alphard
Profil
možné to je, "chyba" je na tomto řádku:
if (move_uploaded_file($_FILES['nazev_souboru']['tmp_name'], "../prijato/{$_FILES['nazev_souboru']['name']}"))
chyba v tom smyslu, že fce move_uploaded_file() obrázek přesune a dále s ním nelze pracovat v daném umístění, možnosti jsou asi 2:
1. použít funkci copy(), zkopíruje obrázek a zachová ho pro další práci
2. funkci, která ho zmenší na miniaturu, zavolat na začátku a předat ji původní cestu

PS: je to nebezpečné, lze uploadovat soubor *.php a ve složce prijato spustit libovolný kód
KOŽAK
Profil *
když zkouším použít copy vyhlásí mne to takhle ví někdo co to znamená? že by na wz měli zakázané použití této funkce?


Warning: copy() has been disabled for security reasons in /3w/wz.
KOŽAK
Profil *
tak jsem ještě trochu hledal a našel jsem něco co by mohlo muj problem vyřešit, skript jsem trochu upravil jenže částečně nefunguje do slozky prijato(puvodni slozka) se sice soubory uploaduji ale do prijato /miniatury se nepridavaji zmenseniny kopne mne nekdo kde mam chybu??
KOŽAK
Profil *
jeste ten skript pardon :-)


if (is_uploaded_file ($_FILES['nazev_souboru']['tmp_name'])) {
if (move_uploaded_file($_FILES['nazev_souboru']['tmp_name'], "../prijato/{$_FILES['nazev_souboru']['name']}")) { // Přenést soubor.

echo '<p>Soubor byl přenesen!</p>';

$width = 50;
$height = 50;

$dir = '../prijato/miniatury/';
function image($file) {
global $width;
global $height;
global $dir;
$imagesize = getimagesize($file);
switch($imagesize[3]) {
case '1':

$img = imagecreatefromgif($file);

break;
case '2':

$img = imagecreatefromjpeg($file);

break;
case '3':

$img = imagecreatefrompng($file);

break;
}
if(!$img) {
return false;
}

$img2 = imagecreatetruecolor($width, $height);
imagecopyresized($soubor, $x, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]);

if($imagesize[3] == 2) {
imagejpeg($img2, $dir . $_FILES['nazev_souboru']['name'] . 'jpg');
}

elseif($imagesize[3] == 1) {
imagetruecolortopalette($img2, false, 256);
imagegif($img2, $dir . $_FILES['nazev_souboru']['name'] . 'gif');
}

elseif($imagesize[3] == 3) {
imagetruecolortopalette($img2, false, 256);
imagegif($img2, $dir . $_FILES['nazev_souboru']['name'] . 'png');
}

}

} else { // Soubor nelze přenést.
echo '<p><font color="red">Soubor nelze přenést.</font></p>';
$soub = '';
}
$soub = $_FILES['nazev_souboru']['name'];
} else {
$soub = '';
}
srigi
Profil
Mozem postnut svoje riesenie?
public function upload_image()
{
  if (!isset($_FILES['filename'])) { // basic error handling if empty $_FILES
    header('Location: /admin/image-manager/');
  }

  if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
    if ($_FILES['filename']['type'] == 'image/gif' ||
        $_FILES['filename']['type'] == 'image/jpeg' ||
        $_FILES['filename']['type'] == 'image/png') {
      $result = move_uploaded_file($_FILES['filename']['tmp_name'], '/upload/directory/'.$_FILES['filename']['name']);
      if ($result) {
        // generate thumbail for new image
        $img = new Gregphoto_image('/upload/directory/'.$_FILES['filename']['name']);
        $img->setMaxWidth(120);
        $img->resize(Gregphoto_Image::MAX_WIDTH);
        $img->saveThumbnail('/thumb/directory/'.$_FILES['filename']['name']);
 
        echo "everything went O.K.";
  
      } else {
        echo "error ocured!";
      }

    } else {
      echo "NOT an image!";
    }
  }
}
Triedu Gregphoto_Image najdes tu. Funguje to vyborne, vyhoda je najma moznost zvolit si resize mod (maxwidth, maxheight, best fit). Urcite vyskusaj.

BTW vsimol som si, ze netestujes typ prijateho suboru, to je velka chyba, ludia ti mozu uploadovat php skripty, co mimoriadne ohrozuje aplikaciu!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0