#8 · Zasláno:
2. 6. 2007, 18:50:56 · Upravil/a: Ssob
Davam sem celej skript na upload obrazku do fotogalerie. Hlasky jsou v polsko-ceskem nareci.. Najdi si tam co potrebujes. Na rozbaleni zipu je funkce unpackZip.
<?
session_start();
include('autorizace.php');
require_once ('connect.php');
if (!$_POST['fotki_new_nazwa'])
{
PosliHlaske("Niezadano nazwa");
}
if (!checkdate($_POST['new_fotki_kiedy_m'],$_POST['new_fotki_kiedy_d'],$_ POST['new_fotki_kiedy_r']))
{
PosliHlaske("Datum je nieplatne");
}
$fotki_new_kiedy=mktime(0,0,0,$_POST['new_fotki_kiedy_m'],$_POST['new_ fotki_kiedy_d'],$_POST['new_fotki_kiedy_r']);
/*
print '<pre>';
print_r($_FILES['soubor']);
print '</pre>';
print $_FILES['soubor']['type'][0].'<br />';
print $_FILES['soubor']['type'][1].'<br />';
*/
for ($i = 0;$i < count($_FILES['soubor']['tmp_name']); $i++)
{
if (!is_file($_FILES['soubor']['tmp_name'][$i]))
PosliHlaske("Musisz wybrac jaksi soubor (soubor ".($i+1).")");
if ($_FILES['soubor']['type'][$i] != 'application/x-zip-compressed' && $_FILES['soubor']['type'][$i] != 'application/zip')
PosliHlaske("Moze to byc jyny zip (soubor ".($i+1).")");
}
//print_r($_FILES['soubor']);
//exit;
$souborow = 0;
$slozka = DejNowomSlozke();
$cesta = '../fotosy/'.$slozka.'/';
print 'Slozka - '.$slozka.'<br />';
for ($i = 0;$i < count($_FILES['soubor']['tmp_name']); $i++)
{
if (move_uploaded_file($_FILES['soubor']['tmp_name'][$i],"../zip/".$_FILE S['soubor']['name'][$i]))
{
$hlaska = "Soubor ".$_FILES['soubor']['name'][$i]." o wielkosci ";
$hlaska .= round(($_FILES['soubor']['size'][$i]/1048576), 2)."MB byl ulozony na serwer.<br />";
print $hlaska;
print 'Teraz se rozbaluje<br />';
$file = explode('.', $_FILES['soubor']['name'][$i]);
if (unpackZip("../zip/", $file[0],$cesta,$souborow))
print 'Rozbalone ok (soubor '.($i+1).')<br />';
else
print 'Niepodarzilo se rozbalic soubor '.($i+1).'<br />Rozbalymy to ryncznie jak tu bydymy<br />';
}
}
echo 'Rozbalone wszystko. Souborow = '.($i+1).'. Wszystkich fotek = '.$souborow.'.<br />';
print 'Sprawdzom czy je dobro wielkosc obrazkow - maksymalno wielkosc 200kb<br />';
$handle=opendir($cesta);
while ($file = readdir($handle))
{
if ($file != "." && !is_dir($cesta.$file))
{
$wel = getimagesize($cesta.$file);
$size = round((filesize($cesta.$file) / 1024),2);
echo $file.' - '.$wel[0].'px x '.$wel[1].'px, '.$size.'kb';
if ($size<200)
print ' --> OK';
else
{
print ' --> Za wielki, zmiynszom';
list($wid,$hei) = @getimagesize($cesta.$file);
if ($wid > $hei)
$ratio = 1000 / $wid;
else
$ratio = 1000 / $hei;
$new_wid = $wid * $ratio;
$new_hei = $hei * $ratio;
$thumb = imagecreatetruecolor($new_wid,$new_hei);
$source = imagecreatefromjpeg($cesta.$file);
imagecopyresampled($thumb,$source,0,0,0,0,$new_wid,$new_hei,$wid,$hei) ;
unlink($cesta.$file);
print 'Odstraniony soubor '.$cesta.$file.'<br />';
imagejpeg($thumb, $cesta.$file,75);
imagedestroy($thumb);
imagedestroy($source);
$size = round((filesize($cesta.$file) / 1024),2);
print '<br />Zmiynszone - '.$size.'kb';
}
print '<br />';
}
}
closedir($handle);
print 'Koniec kontroli wielkosci<br />';
print 'Wytworzom miniatury - wysokosc miniatur je 100px<br />';
$handle=opendir($cesta);
mkdir('../mini/'.$slozka);
while ($file = readdir($handle))
{
if ($file != "." && !is_dir($cesta.$file))
{
$wel = getimagesize($cesta.$file);
echo $file.' - '.$wel[0].'px x '.$wel[1].'px';
list($wid,$hei) = @getimagesize($cesta.$file);
$ratio = 100 / $hei;
$new_wid = $wid * $ratio;
$new_hei = $hei * $ratio;
$thumb = imagecreatetruecolor($new_wid,$new_hei);
$source = imagecreatefromjpeg($cesta.$file);
imagecopyresampled($thumb,$source,0,0,0,0,$new_wid,$new_hei,$wid,$hei) ;
imagejpeg($thumb, '../mini/'.$slozka.'/'.$file,75);
imagedestroy($thumb);
imagedestroy($source);
$wel = getimagesize('../mini/'.$slozka.'/'.$file);
print ' --> Zrobiono miniatura - '.$wel[0].'px x '.$wel[1].'px';
print '<br />';
}
}
closedir($handle);
print 'Miniatury wyrworzone<br />';
$sql = "INSERT INTO Fotki2 VALUES('','".$_SESSION['prihlas_ID']."','$slozka','".$_POST['fotki_new _nazwa']."','$souborow','".$fotki_new_kiedy."','".time()."')";
$mysql_query = mysql_query($sql);
if ($mysql_query)
{
/*$tekst= "Byly przidane nowe fotki<br />".$_POST['fotki_new_nazwa']." - ".date("d.m.Y",$fotki_new_kiedy);
$sql="INSERT INTO Home VALUES ('','".$_SESSION['prihlas_ID']."','".time()."','Nowe fotki!','$tekst','')";*/
$sql="INSERT INTO Nowe VALUES ('','".$_POST['fotki_new_nazwa']."','7','zobraz=7&fotki_id=".mysql_ins ert_id()."','".time()."','".$_SESSION['prihlas_ID']."')";
$mysql_query=@mysql_query($sql,$connect);
print 'Wlozone do DB<br />';
}
else
print 'Nie podarzilo se wlozyc do DB<br />';
PosliHlaske('OK');
function PosliHlaske($s_Hlaska)
{
print '<br />'.$s_Hlaska;
print '<br /><br /><a href="'.$_SERVER['HTTP_REFERER'].'">Spatki se wrocisz tu</a>';
exit;
}
function unpackZip($dir,$file,$newdir,&$ilosc)
{
if ($zip = zip_open($dir.$file.".zip"))
{
if ($zip)
{
if (!is_dir($newdir))
echo mkdir($newdir);
while ($zip_entry = zip_read($zip))
{
if (zip_entry_open($zip,$zip_entry,"r"))
{
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$dir_name = dirname(zip_entry_name($zip_entry));
if ($dir_name != ".")
{
$dir_op = $dir.$file."/";
foreach ( explode("/",$dir_name) as $k)
{
$dir_op = $dir_op . $k;
if (is_file($dir_op))
unlink($dir_op);
}
}
$nazwa = explode('.', zip_entry_name($zip_entry));
if ($nazwa[1] == 'jpg' || $nazwa[1] == 'JPG')
{
$ilosc++;
$fp=fopen($newdir.$ilosc.'.jpg',"w");
fwrite($fp,$buf);
fclose($fp);
}
zip_entry_close($zip_entry);
}
else
return false;
}
zip_close($zip);
}
}
else
return false;
return true;
}
function DejNowomSlozke($dir = '../fotosy')
{
$handle=opendir($dir);
$max = 1;
while ($file = readdir($handle))
{
if ($file != "." && is_dir($dir.'/'.$file))
{
if (intval($file))
{
if ($file > $max)
{
$max = $file;
}
}
}
}
closedir($handle);
return $max+1;
}
?>