Avatar billede baitianlong Nybegynder
25. oktober 2004 - 14:38 Der er 2 kommentarer og
1 løsning

Et par spørgsmål til mit upload og resize billede script

Jeg har et "upload billede og lav en resized kopi" - script, og jeg har et par spørgsmål til det.

1) Jeg vil sørge for at brugeren ikke uploader en farlig fil, og til det har jeg skrevet denne linie:

elseif(strstr("exe php asp cgi", $_FILES['uploadlogo']['type'])) {
        $melding = "File format not allowed, only images !";

Er det en smart måde at gøre det på ? Den virker lidt plat i mine øjne !

2) Mit script duer kun med jpg, men det skal også virke med gif:

} else {
    move_uploaded_file($_FILES['uploadlogo']['tmp_name'], $_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
    $filename = $location.$_FILES['uploadlogo']['name'];
    header('Content-type: image/jpeg');
    list($width, $height) = getimagesize($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
    $new_width = 100;
    $krympefaktor = $new_width/$width;
    $new_height = round($height * $krympefaktor);
    $image_blank = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
    imagecopyresampled($image_blank, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagejpeg( $image_blank, $_SERVER['DOCUMENT_ROOT']."/cms/images/".basename($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name'], ".jpg")."_thumb.jpg", 85 );
    $newfilename = basename($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name'], ".jpg")."_thumb.jpg";
    $newfileurl = $_POST['uploadurl'];
    writeFile($newfilename, $newfileurl);

Et par kommentarer og en løsning på gif-problematikken ?!

På forhånd tak :)
Avatar billede baitianlong Nybegynder
25. oktober 2004 - 15:14 #1
Jeg skrev koden lidt om, så den burde virke, men der sker ikke noget... dvs. gif-billedet bliver uploaded, men der laves ikke nogen thumb.

Der står i min PHP bog at imagegif kun virker på meget gamle GD lib's. -Så det er nok det, der er galt.

Hvad gør man så ?! Hvorfor findes den funktion ikke mere... Mit script ser sådan her ud nu:

move_uploaded_file($_FILES['uploadlogo']['tmp_name'], $_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
if($_FILES['uploadfile']['type'] == "image/gif") header('Content-type: image/gif');
elseif($_FILES['uploadfile']['type'] == "image/pjpeg") header('Content-type: image/jpg');
list($width, $height) = getimagesize($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
$new_width = 100;
$krympefaktor = $new_width/$width;
$new_height = round($height * $krympefaktor);
$image_blank = imagecreatetruecolor($new_width, $new_height);
if($_FILES['uploadfile']['type'] == "image/pjpeg") {
    $image = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
    imagecopyresampled($image_blank, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagejpeg( $image_blank, $_SERVER['DOCUMENT_ROOT']."/cms/images/".basename($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name'], ".jpg")."_thumb.jpg", 85 );
    $newfilename = basename($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name'], ".gif")."_thumb.gif";
} elseif($_FILES['uploadfile']['type'] == "image/gif") {
    $image = imagecreatefromgif($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
    imagecopyresampled($image_blank, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagegif( $image_blank, $_SERVER['DOCUMENT_ROOT']."/cms/images/".basename($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name'], ".gif")."_thumb.gif");
    $newfilename = basename($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name'], ".jpg")."_thumb.jpg";
}
$newfileurl = $_POST['uploadurl'];
writeFile($newfilename, $newfileurl);

HJÆLP :)
Avatar billede baitianlong Nybegynder
25. oktober 2004 - 15:16 #2
Ken jeg eventuelt lave gif-billedet om til jpg, når jeg kopierer det, og få det til at virke, eller er der en anden måde at lave gif-billeder ud af gif-billeder :)
Avatar billede baitianlong Nybegynder
25. oktober 2004 - 16:43 #3
Sært at der ikke var nogen, der ville kigge på det ??

Men efter 1½ time har jeg nu fået det fikset på denne måde:

move_uploaded_file($_FILES['uploadlogo']['tmp_name'], $_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
list($width, $height) = getimagesize($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
$new_width = 100;
$krympefaktor = $new_width/$width;
$new_height = round($height * $krympefaktor);
$destinationImage = imagecreatetruecolor($new_width, $new_height);
if($_FILES['uploadlogo']['type'] == "image/pjpeg") {
    $sourceImage = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
    imagepng($destinationImage, $_SERVER['DOCUMENT_ROOT']."/cms/images/".basename($_FILES['uploadlogo']['name'], ".jpg")."_thumb.jpg");
    $newfilename = basename($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name'], ".jpg")."_thumb.jpg";
} elseif($_FILES['uploadlogo']['type'] == "image/gif") {
    $sourceImage = imagecreatefromgif($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name']);
    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
    imagepng($destinationImage, $_SERVER['DOCUMENT_ROOT']."/cms/images/".basename($_FILES['uploadlogo']['name'], ".gif")."_thumb.gif");
    $newfilename = basename($_SERVER['DOCUMENT_ROOT']."/cms/images/".$_FILES['uploadlogo']['name'], ".gif")."_thumb.gif";
}
$newfileurl = $_POST['uploadurl'];
writeFile($newfilename, $newfileurl);

Det er jo smukt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester