Frågan 11 juli 2007 08:15 #1 Hej,
Nu har det varit många frågor ang. bilduppladdning och skapande av thumbnails här på forumet. Nu kommer det en till.
Jag laddar upp en zipfil på servern, extraherar bilderna som är i, lägger till info om bilderna i min MySQL-databas.
Sen vill jag även skapa thumbnails av dessa bilder. I den koden som jag skickar med så packas alla filer upp, alla info läggs in i MySQL´en men endast 1 thumbnail skapas, och det är den första bilden i zipfilen. Inget felmeddelande , utan jag skickas tillbaka med "Header("Location: admin.php?katId=1");" precis som jag ska. Varför blir det så?
if($_GET['action'] == "extract"){
$zipFilnamn = $_POST['txtZipFil'];
$zip = new PclZip($zipFilnamn);
if ($zip->extract(PCLZIP_OPT_PATH, 'pictures') == 0) {
die("Error : ".$zip->errorInfo(true));
}
if (($list = $zip->listContent(1)) == 0) {
die("Error : ".$zip->errorInfo(true));
}
for ($i=0; $i<sizeof($list); $i++) {
for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
if($key == "filename"){
$uppladdadBild = $list[$i][$key];
}elseif($key == "size"){
$bildStorlekTmp = $list[$i][$key];
$bildStorlek = ($bildStorlekTmp / 1000000);
}
}
$PhotoUploaded = date("Y-m-d H:i:s");
//Lägger till i MySQL-databasen
//Skapa tumnaglar
$helasokvagen = "pictures/$uppladdadBild";
$tumnagel = "pictures/thumb_$uppladdadBild";
$src_im = imagecreatefromjpeg($helasokvagen);
$dstW = 150; // Bredd på thumbnail
$dstH = 150; // Höjd på thumbnail
$dst_im = imagecreatetruecolor($dstW, $dstH);
$srcW = imagesx($src_im);
$srcH = imagesy($src_im);
imagecopyresampled( $dst_im, $src_im, 0, 0, 0, 0, $dstW, $dstH, $srcW, $srcH);
imagejpeg($dst_im, $tumnagel, 60);
imagedestroy($src_im);
imagedestroy($dst_im);
}
Header("Location: admin.php?katId=1");
}
Tacksam för hjälp!
Kan du ge en var_dump på $list?
Sedan verkar din inre for-loop vara ett omständligt sätt att replikera foreach. Vad har syntaxen för syfte?
Också den yttre loopen skulle jag gjort med foreach.
foreach ( $list as &$listpost ) {
foreach ( $listpost as $key => $listpostvalue ) {
Att skicka som referens i foreach kräver PHP 5, men torde inte behövas för denna operation. Jag tar med det för elegansens skull.
Tack så mkt! Funkar perfekt!
@nders Medlem sedan juni 2000 32 967 inlägg Va bra att det funkade. Då kanske du kan passa på att acceptera rätt inlägg som lösning på problemet också?
Hur markerar jag vilket svar som löste mitt problem?