Allting fungerar som det ska, förutom pjpeg bilder... jag har läst lite om just detta filformatet och att det ibland kan ställa till problem när man försöker skala om dem (bilket jag också gör med bilderna jag laddar upp).
Men hos mig så stoppas alla dessa bilder redan i denna kontrollen.... jag har gjort en annan temporär kontroll som plockar ut filändelsen som den sen kollar... där går den igenom... men stoppas istället när jag försöker kopiera den uppladdade filen till korrekt mapp och när jag försöker skala om det.
Detta måste vara ett känt problem... känns så i alla fall. Jag har bara hittat ett fåtal texter som beskriver ungefär samma problem.. men icke någon lösning.
Jag har även omorganiserat koden lite. MIME-typer bör skrivas med små bokstäver så det är helt i sin ordning att köra en strtolower på resultatet. Vad gäller image/jpg bör aldrig förekomma, det vet jag inte var du fått från. image/pjpeg är i detta fall inte en separat filtyp, utan vad IE väljer att kalla alla jpeg-filer. Lösningen bör vara att byta ut alla förekomster av image/pjpeg mot image/jpeg. Kolla om det funkar och återkom.
jpeg, pjpeg om det är ifrån IE jag laddar upp. Förbryllande fel... det måste nästan ha någonting att göra med hur stor bilden är eller dimesionerna.... känns så i alla fall
Men då kännsd et också som att det är fel på min webbserver.. men jag har testat det på två olika nu.
Jag har testat ladda upp en 3000x3000 .png bild på 5MB... den flöt rakt igenom helt perfekt. jag har även provat extremt stora .gif bilder och dessa fungerar också....
Den kommer inte så långt dock... men jag har testat att strunta i kontrollen för att se vad som händer... då blir det massa andra problem... t ex att filen inte hittas när den ska flyttas från temp-mappen till den ordentliga mappen.
Följande kod använder jag för att förminska
<?php
class thumbnail
{
//Skapar thumbnail, eller om bilden är mindre än vald bredd så kopierar den bilden till korrekt mapp
public function new_thumb($thumb, $original, $bredd, $dimensioner, $tempnamn, $bildnamn, $filandelse, $kompression)
{
if ($bredd < $dimensioner[0]) {
$hojd = ceil(($bredd / $dimensioner[0]) * $dimensioner[1]);
// Fixar ny storlek för bilden
$nybild = imagecreatetruecolor($bredd, $hojd);
// Kontrollera vad det är för bildtyp det är
// 1=gif , 2=jpg , 3=png
switch($dimensioner[2]) {
case 1:
$bild = imagecreatefromgif($tempnamn);
break;
case 2:
$bild = imagecreatefromjpeg($tempnamn);
break;
case 3:
$bild = imagecreatefrompng($tempnamn);
break;
}
//renderar bilden
imagecopyresampled($nybild, $bild, 0, 0, 0, 0, $bredd, $hojd, $dimensioner[0], $dimensioner[1]);
// Kopiera bilden till korrekt mapp
$sparabild = $thumb . '/' . $bildnamn;
imagejpeg($nybild, $sparabild, $kompression);
// Frigör minne som associerats med bilderna...
imagedestroy($bild);
imagedestroy($nybild);
return true;
}
//Om bilden redan är mindre än vald thumbnailstorlek flyttar den bilden både till tbumbnail mappen och till originalmappen.
else
{
move_uploaded_file($tempnamn, $thumb . '/' . $bildnamn);
copy ($thumb . '/' . $bildnamn, $original . '/' . $bildnamn);
return false;
}
}
}
?>
hmmm... tror jag hittat felet :) Jag har en temporär utvecklingsserver på min egna dator (Vista), så jag provade köra allting på en xp maskin... tidigare provade jag bara byta vista maskin..... nu fungerar det :o
Frågan är bara... varför?
263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849