note 96216 added to function.move-uploaded-file

From: Date: Mon, 15 Feb 2010 19:34:33 +0000
Subject: note 96216 added to function.move-uploaded-file
Groups: php.notes 
Request: Send a blank email to php-notes+get-165982@lists.php.net to get a copy of this message
I have for a couple of years been stymed to understand how to effectively load images (of more than 2MB) and then create thumbnails. My note below on general file uploading was an early hint of some of the system default limitations and I have recently discovered the final limit I offer this as an example of the various missing pieces of information to successfully load images of more than 2MB and then create thumbnails. This particular example assumes a picture of a user is being uploaded and because of browser caching needs a unique number at the end to make the browser load a new picture for review at the time of upload. The overall calling program I am using is a Flex based application which calls this php file to upload user thumbnails. The secret sauce is: 1. adjust server memory size, file upload size, and post size 2. convert image to standard formate (in this case jpg) and scale The server may be adjusted with the .htaccess file or inline code. This example has an .htaccess file with file upload size and post size and then inline code for dynamic system memory. htaccess file: php_value post_max_size 16M php_value upload_max_filesize 6M <?php // $img_base = base directory structure for thumbnail images // $w_dst = maximum width of thumbnail // $h_dst = maximum height of thumbnail // $n_img = new thumbnail name // $o_img = old thumbnail name function convertPic($img_base, $w_dst, $h_dst, $n_img, $o_img) {ini_set('memory_limit', '100M'); // handle large images unlink($img_base.$n_img); // remove old images if present unlink($img_base.$o_img); $new_img = $img_base.$n_img; $file_src = $img_base."img.jpg"; // temporary safe image storage unlink($file_src); move_uploaded_file($_FILES['Filedata']['tmp_name'], $file_src); list($w_src, $h_src, $type) = getimagesize($file_src); // create new dimensions, keeping aspect ratio $ratio = $w_src/$h_src; if ($w_dst/$h_dst > $ratio) {$w_dst = floor($h_dst*$ratio);} else {$h_dst = floor($w_dst/$ratio);} switch ($type) {case 1: // gif -> jpg $img_src = imagecreatefromgif($file_src); break; case 2: // jpeg -> jpg $img_src = imagecreatefromjpeg($file_src); break; case 3: // png -> jpg $img_src = imagecreatefrompng($file_src); break; } $img_dst = imagecreatetruecolor($w_dst, $h_dst); // resample imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $w_dst, $h_dst, $w_src, $h_src); imagejpeg($img_dst, $new_img); // save new image unlink($file_src); // clean up image storage imagedestroy($img_src); imagedestroy($img_dst); } $p_id = (Integer) $_POST[uid]; $ver = (Integer) $_POST[ver]; $delver = (Integer) $_POST[delver]; convertPic("your/file/structure/", 150, 150, "u".$p_id."v".$ver.".jpg", "u".$p_id."v".$delver.".jpg"); ?> ---- Server IP: 208.69.120.55 Probable Submitter: 98.207.212.33 ---- Manual Page -- http://www.php.net/manual/en/function.move-uploaded-file.php Edit -- https://master.php.net/note/edit/96216 Del: integrated -- https://master.php.net/note/delete/96216/integrated Del: useless -- https://master.php.net/note/delete/96216/useless Del: bad code -- https://master.php.net/note/delete/96216/bad+code Del: spam -- https://master.php.net/note/delete/96216/spam Del: non-english -- https://master.php.net/note/delete/96216/non-english Del: in docs -- https://master.php.net/note/delete/96216/in+docs Del: other reasons-- https://master.php.net/note/delete/96216 Reject -- https://master.php.net/note/reject/96216 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#165982) next »