Re: Upload and resize file

From: Date: Thu, 23 Aug 2007 12:50:03 +0000
Subject: Re: Upload and resize file
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-261158@lists.php.net to get a copy of this message
Suggest you find another script. That one is weird and not simple PHP code, which will do your task easily. Beauford wrote:
I downloaded this 'upload and resize image' script, and since I have no idea what I am looking at as this is something I have never done, could someone have a look and see what the problem might be. I've been searching around but haven't come across anything that makes any sense yet. When a picture needs to be resized I am getting the following error. If it is the same size or under I don't get this error. Warning: unlink() [function.unlink]: No such file or directory in /usr/local/apache/htdocs/website/upload.php on line 92 The full code is below. Thanks ------------------------------------------------------------------ <html> <head>
    <title>web.blazonry : PHP : Upload and Resize an Image</title>
<?php if ($_SERVER['REQUEST_METHOD'] == "POST") {
    /* SUBMITTED INFORMATION - use what you need
     * temporary filename (pointer): $imgfile
     * original filename           : $imgfile_name
     * size of uploaded file       : $imgfile_size
     * mime-type of uploaded file  : $imgfile_type
     */
     /*== upload directory where the file will be stored           relative to where script is run ==*/
        $uploaddir = "images";
    
    /*== get file extension (fn at bottom of script) ==*/
    /*== checks to see if image file, if not do not allow upload ==*/
    $pext = getFileExtension($imgfile_name);
    $pext = strtolower($pext);
    if (($pext != "jpg")  && ($pext != "jpeg"))
    {
        print "<h1>ERROR</h1>Image Extension Unknown.<br>";
        print "<p>Please upload only a JPEG image with the extension .jpg or
.jpeg ONLY<br><br>";
        print "The file you uploaded had the following extension:
$pext</p>\n";
        /*== delete uploaded file ==*/
        unlink($imgfile);
        exit();
    }
    //-- RE-SIZING UPLOADED IMAGE
    /*== only resize if the image is larger than 250 x 200 ==*/
    $imgsize = GetImageSize($imgfile);
    /*== check size  0=width, 1=height ==*/
    if (($imgsize[0] > 250) || ($imgsize[1] > 200))     {
        /*== temp image file -- use "tempnam()" to generate the temp
             file name. This is done so if multiple people access the             script at once they won't ruin each other's temp file ==*/
        $tmpimg = tempnam("/tmp", "MKUP");
        /*== RESIZE PROCESS
             1. decompress jpeg image to pnm file (a raw image type)              2. scale pnm image
             3. compress pnm file to jpeg image
        ==*/
                /*== Step 1: djpeg decompresses jpeg to pnm ==*/
        system("djpeg $imgfile >$tmpimg");
        
        /*== Steps 2&3: scale image using pnmscale and then
             pipe into cjpeg to output jpeg file ==*/
        system("pnmscale -xy 250 200 $tmpimg | cjpeg -smoo 10 -qual 50
$imgfile");
        /*== remove temp image ==*/
        unlink($tmpimg);
    }
    /*== setup final file location and name ==*/
    /*== change spaces to underscores in filename  ==*/
    $final_filename = str_replace(" ", "_", $imgfile_name);
    $newfile = $uploaddir . "/$final_filename";
        /*== do extra security check to prevent malicious abuse==*/
    if (is_uploaded_file($imgfile))
    {
       /*== move file to proper directory ==*/
       if (!copy($imgfile,"$newfile"))        {
          /*== if an error occurs the file could not
               be written, read or possibly does not exist ==*/
          print "Error Uploading File.";
          exit();
       }
     }
    /*== delete the temporary uploaded file ==*/
unlink($imgfile);
        print("<img src=\"images\\$final_filename\">");
    /*== DO WHATEVER ELSE YOU WANT
         SUCH AS INSERT DATA INTO A DATABASE  ==*/
} ?> </head> <body bgcolor="#FFFFFF">
    <h2>Upload and Resize an Image</h2>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"
enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="50000">
    <p>Upload Image: <input type="file" name="imgfile"><br>
    <font size="1">Click browse to upload a local file</font><br>
    <br>
    <input type="submit" value="Upload Image">
    </form>
</body> </html> <?php
    /*== FUNCTIONS ==*/
    function getFileExtension($str) {
        $i = strrpos($str,".");
        if (!$i) { return ""; }
        $l = strlen($str) - $i;
        $ext = substr($str,$i+1,$l);
        return $ext;
    }
?>


« previous php.general (#261158) next »