bytesize Posted August 10, 2010 Share Posted August 10, 2010 This code uploads a file to the server then renames it to the next id number from the database and adds the extension .jpg to the file name. index.php - I need .jpg to be a variable that will append .gif if it's a gif file or .png if it's a png file. Currently, if the file is a .jpg, .gif, or .png, the files are given the extension .jpg. <?php copy($_FILES['banner']['tmp_name']['file'], './banners/'.$photo_id.'.jpg'); ?> _photo.php - I want to replace .jpg in this code with the variable from above. <a href="<?php echo safe_output($photo['web_url']); ?>" target="_blank" class="bannerImg"><img src="banners/<?php echo $photo['id']; ?>.jpg"/></a> Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/ Share on other sites More sharing options...
schilly Posted August 10, 2010 Share Posted August 10, 2010 Look at $_FILES['banner']['type'] to figure out which type of image it is then apply the appropriate extension. Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097691 Share on other sites More sharing options...
bytesize Posted August 10, 2010 Author Share Posted August 10, 2010 The problem is the "appropriate extension". Right now .jpg is hard coded in both lines of code. It doesn't matter what file type. I need a variable that includes .jpg, .gif, and .png depending on which file is being uploaded. I'm having trouble creating that variable. Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097705 Share on other sites More sharing options...
wildteen88 Posted August 10, 2010 Share Posted August 10, 2010 Store the uploaded files file name within the database, rather than just the id of the photo. That way when you want to display the image you'll use <a href="<?php echo safe_output($photo['web_url']); ?>" target="_blank" class="bannerImg"><img src="banners/<?php echo $photo['filename']; ?>"/></a> Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097712 Share on other sites More sharing options...
schilly Posted August 10, 2010 Share Posted August 10, 2010 The problem is the "appropriate extension". Right now .jpg is hard coded in both lines of code. It doesn't matter what file type. I need a variable that includes .jpg, .gif, and .png depending on which file is being uploaded. I'm having trouble creating that variable. Yes I know that. Thats why you look at the file type and determine what extension to apply. ie. if($_FILES['banner']['type'] == 'image/jpg') $ext = '.jpg'; elseif($_FILES['banner']['type'] == 'image/gif') ext = '.gif'; //etc //etc wildteen is right. It's better to just store the image name. Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097717 Share on other sites More sharing options...
bytesize Posted August 10, 2010 Author Share Posted August 10, 2010 I need the id because of the tags connected to each image. How would I puy $ext in place of .jpg in this line of code? <?php copy($_FILES['banner']['tmp_name']['file'], './banners/'.$photo_id.'.jpg'); ?> and in here as well? <a href="<?php echo safe_output($photo['web_url']); ?>" target="_blank" class="bannerImg"><img src="banners/<?php echo $photo['id']; ?>.jpg"/></a> Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097754 Share on other sites More sharing options...
bytesize Posted August 10, 2010 Author Share Posted August 10, 2010 Nothing Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097774 Share on other sites More sharing options...
hcdarkmage Posted August 10, 2010 Share Posted August 10, 2010 <?php copy($_FILES['banner']['tmp_name']['file'], './banners/'.$photo_id $ext.'); ?> <a href="<?php echo safe_output($photo['web_url']); ?>" target="_blank" class="bannerImg"><img src="banners/<?php echo $photo['id']$ext; ?>"/></a> Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097789 Share on other sites More sharing options...
schilly Posted August 10, 2010 Share Posted August 10, 2010 <?php copy($_FILES['banner']['tmp_name']['file'], './banners/'.$photo_id.$ext); ?> <a href="<?php echo safe_output($photo['web_url']); ?>" target="_blank" class="bannerImg"><img src="banners/<?php echo $photo['id'] . $ext; ?>"/></a> For the second line you'll need to get the image type from getimagesize('image/location'); in order to see what type of ext it is. http://php.net/manual/en/function.getimagesize.php Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097791 Share on other sites More sharing options...
schilly Posted August 10, 2010 Share Posted August 10, 2010 You should also use move_uploaded_file() as appose to copy() Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1097793 Share on other sites More sharing options...
bytesize Posted August 11, 2010 Author Share Posted August 11, 2010 I can't seem to make this work. If I use $ext it does not add the extension to the file. Where does this code belong? if($_FILES['banner']['tmp_name']['type'] == 'image/jpg') $ext = '.jpg'; elseif($_FILES['banner']['tmp_name']['type'] == 'image/gif') $ext = '.gif'; index.php - This is the complete case "create" <?php include('validate.php'); case "create": $page_title = 'Submit Banner'; $page_on = 'submit'; $id_num = mysql_real_escape_string($_POST['banner']['paypal_id']); if($id_num > "") { $rs_duplicate = mysql_query("SELECT id FROM photos WHERE paypal_id='$id_num'") or die("MySql Error:<br>".mysql_error()); $duplicate = mysql_num_rows($rs_duplicate); if ($duplicate > 0) { header("Location: index.php"); exit(); } } if(is_jpeg($_FILES['banner']['type']['file']) and is_valid_file_size($_FILES['banner']['size']['file']) and is_uploaded_file($_FILES['banner']['tmp_name']['file']) and is_minimum_width_height($_FILES['banner']['tmp_name']['file']) and is_maximum_width_height($_FILES['banner']['tmp_name']['file']) ) { if(is_fields_filled_out($_POST['banner'])) { $_POST['banner']['theme_id'] = $this_weeks_theme['id']; $photo_id = create_photo($_POST['banner']); copy($_FILES['banner']['tmp_name']['file'], './banners/'.$photo_id.'.jpg'); /*$notice = "Success! Your banner has been uploaded.";*/ header("Location: index.php"); } else { $warning = "ERROR: All the text fields must be filled-in."; } } else { $warning = "ERROR: Banner must be a jpg or gif, maximum file size 100k, and not larger than 728px by 90px."; } break; ?> validate.php - This is the file included with index.php <?php function is_jpeg($file_type) { if($file_type == 'image/jpeg' or $file_type == 'image/pjpeg' or $file_type == 'image/gif') { return true; } else { return false; } } function is_minimum_width_height($minimun) { $min_width = 450; $min_height = 50; list($img_width, $img_height) = getimagesize($minimun); if($img_width >= $min_width and $img_height >= $min_height) { return true; } else { return false; } } function is_maximum_width_height($maximum) { $min_width = 728; $min_height = 90; list($img_width, $img_height) = getimagesize($maximum); if($img_width <= $min_width and $img_height <= $min_height) { return true; } else { return false; } } function is_valid_file_size($file_size, $max_size = 100000) { if($file_size > $max_size) { return false; } else { return true; } } function is_fields_filled_out($params) { foreach($params as $key => $value) { if(!isset($key) || ($value == '')) { return false; } } return true; } ?> Link to comment https://forums.phpfreaks.com/topic/210350-a-variable-for-naming-file-extension/#findComment-1098179 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.