file uploads
| From: | Jon Bennett | Date: | Mon, 01 Dec 2003 12:50:00 +0000 |
| Subject: | file uploads | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-171456@lists.php.net to get a copy of this message | ||
Hi,
I have a file upload problem, but I don't think it's a permission thing (if only, that would be simple!).
I have written a resizing method for a class I'm working on, and it always fails on the imageJpeg() at the end of the method. This is the error I get...
imagejpeg(): Unable to open '/Library/WebServer/Documents/my_site/_lib/_products/2_big_me.jpg' for writing in /Library/WebServer/Documents/my_site/_lib/_classes/class.products.php on line 132
Now, here's the strange bit, if I call my method and just use move_uploaded_file() then the image is saved correctly, so I know it's not the permissions, could someone have a little look at my method and let me know if there's anything wrong with it please
// $ID is an integer used for naming purposes
// $aImage is an array, it's basically a copy of $_FILES["image"]
// BASE_DIR is a constant var and holds, yep you guessed it, the base dir of the site!
// IMGMAXHEIGHT & IMGMAXWIDTH are also constants used for resizing purposes
function storeBigImage($ID, $aImage){
// create filenames fopen($aImage['name'], 'r'); $aNewImage['real_name'] = $aImage['name']; $aNewImage['new_name'] = $ID . '_' . 'big' . '_' . $aNewImage['real_name']; $aNewImage['image_loc'] = BASE_DIR . '_lib/_products/' . $aNewImage['new_name']; // copy original image $aNewImage['original_image'] = ImageCreateFromJpeg($aImage['tmp_name']); $aNewImage['sizes'] = getimagesize($aImage['tmp_name']); $aNewImage['width'] = $aNewImage['sizes'][0]; $aNewImage['height'] = $aNewImage['sizes'][0]; if($aNewImage['width'] >= IMGMAXWIDTH || $aNewImage['height']= IMGMAXHEIGHT){
// calculate ratios
$iRatio_w = IMGMAXWIDTH / $aNewImage['width'];
$iRatio_h = IMGMAXHEIGHT / $aNewImage['height'];
$iRatio = $iRatio_w < $iRatio_h ? $iRatio_w:$iRatio_h;
// calculate new dimensions
$aNewImage['new_width'] = $aNewImage['width'] * $iRatio;
$aNewImage['new_height'] = $aNewImage['height'] * $iRatio;
// save resized image
$aNewImage['new_image'] = ImageCreateTrueColor($aNewImage['new_width'], $aNewImage['new_height']);
ImageCopyResized($aNewImage['new_image'], ImageCreateFromJpeg($aImage['tmp_name']), 0, 0, 0, 0, $aNewImage['new_width'], $aNewImage['new_height'], $aNewImage['width'], $aNewImage['height']);
//ImageJpeg($aNewImage['new_image'], $aNewImage['image_loc']);
ImageJpeg($aNewImage['original_image'], $aNewImage['image_loc']);
} else {
// save original image
//ImageJpeg($aImage['tmp_name'], $aNewImage['image_loc']);
ImageJpeg($aNewImage['original_image'], $aNewImage['image_loc']);
//ImageJpeg($this->aArgs['Image']['tmp_name'], $aNewImage['image_loc']);
}
}
I have ftp'd into my local server and the folder in question is set at 777, and like I said it works fine if I don't use this class
Any ideas ??
Thanks,
Jon
jon bennett | jon@jben.net
new media designer / developer
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
J b e n . n e t
91 Gloucester Rd, Trowbridge, Wilts, BA14 0AD
t: +44 (0) 1225 341039 w: http://www.jben.net/