Image name Help needed..

Discussion in 'PHP' started by DylanM, Nov 7, 2009.

  1. #1
    I have this image upload script, and it works perfectly. It uploads an image to my server and the image is named after the same name as the image. I would however like the image that to be named after the person's name (that they should type in before the time). This part is not in the code. Pls could someone help me, would be much appreciated.

    Here is a snippet of the existing code:

    <form action="scripts/ajaxupload.php?filename=name&amp;maxH=300" method="post">
    <p>
    <input type="file" name="name" onchange="ajaxUpload(this.form,'scripts/ajaxupload.php?filename=name&amp;maxH=300' />
    </p>
    </form>​

    THanks
     
    DylanM, Nov 7, 2009 IP
  2. AsHinE

    AsHinE Well-Known Member

    Messages:
    240
    Likes Received:
    8
    Best Answers:
    1
    Trophy Points:
    138
    #2
    Do you mean that upload is enabled only to registered and logged users or the should provide their name in the same form?

    If uploading is enabled only for logged user I see no problem in getting their name.

    If you want to add a field to the form, then please, show us your ajaxUpload() javascript function (use [сode] tags) and source of scripts/ajaxupload.php
     
    AsHinE, Nov 7, 2009 IP
  3. DylanM

    DylanM Active Member

    Messages:
    150
    Likes Received:
    5
    Best Answers:
    0
    Trophy Points:
    58
    #3
    DylanM, Nov 7, 2009 IP
  4. AsHinE

    AsHinE Well-Known Member

    Messages:
    240
    Likes Received:
    8
    Best Answers:
    1
    Trophy Points:
    138
    #4
    First thing, form as you show here is not working :)
    So I modified it a little bit so it does not show errors;
    
    <div id="indicator"></div>
    <form action="ajaxupload.php?maxH=300" method="post" enctype="multipart/form-data">
    <p>
    <input type="text" name="filename">
    </p>
    <p>
    <input type="file" name="name" onchange="ajaxUpload(this.form,'ajaxupload.php?maxH=300','indicator','loading')" />
    </p>
    <input type="submit">
    </form>
    
    HTML:
    I also added filename field where you can type desired name of file. In that case your php script is not modified. But please be careful letting your user to name files on your server.
    My ajaxupload.php had only this:
    
    <?php
    print_r($_REQUEST);
    ?>
    
    PHP:
    And as I've see that field (filename) is sent to server:
    
    Array ( [maxH] => 300 [filename] => reallyworks ) 
    
    Code (markup):
     
    AsHinE, Nov 7, 2009 IP
  5. DylanM

    DylanM Active Member

    Messages:
    150
    Likes Received:
    5
    Best Answers:
    0
    Trophy Points:
    58
    #5
    Thanks,
    That last part does not seem to be working.. I get this error:

    Parse error: syntax error, unexpected '[', expecting ')'
     
    DylanM, Nov 7, 2009 IP
  6. AsHinE

    AsHinE Well-Known Member

    Messages:
    240
    Likes Received:
    8
    Best Answers:
    1
    Trophy Points:
    138
    #6
    DylanM , sorry I didn't look carefully in ajaxupload.php
    So your form will be like that:
    
    <div id="indicator"></div>
    <form action="ajaxupload.php?filename=name&amp;maxH=300" method="post" enctype="multipart/form-data">
    <p>
    <input type="text" name="desiredname">
    </p>
    <p>
    <input type="file" name="name" onchange="ajaxUpload(this.form,'ajaxupload.php?filename=name&amp;maxH=300','indicator','loading')" />
    </p>
    <input type="submit">
    </form>
    
    HTML:
    And ajaxupload.php :
    
    <?php
    	function uploadImage($fileName, $maxSize, $maxW, $fullPath, $relPath, $colorR, $colorG, $colorB, $maxH = null, $desiredname = ''){
    		$folder = $relPath;
    		$maxlimit = $maxSize;
    		$allowed_ext = "jpg,jpeg,gif,png,bmp";
    		$match = "";
    		$filesize = $_FILES[$fileName]['size'];
    		if($filesize > 0){	
    			$filename = strtolower($_FILES[$fileName]['name']);
    			$filename = preg_replace('/\s/', '_', $filename);
    		   	if($filesize < 1){ 
    				$errorList[] = "File size is empty.";
    			}
    			if($filesize > $maxlimit){ 
    				$errorList[] = "File size is too big.";
    			}
    		    $file_ext = preg_split("/\./",$filename);
    			$allowed_ext = preg_split("/\,/",$allowed_ext);
    			foreach($allowed_ext as $ext){
    				if($ext==end($file_ext)){
    	   				$match = "1"; // File is allowed
    					$NUM = time();
    					$front_name = substr($file_ext[0], 0, 15);
    					//$newfilename = $front_name."_".$NUM.".".end($file_ext);
    					$newfilename = $desiredname.".".end($file_ext);
    					$filetype = end($file_ext);
    					$save = $folder.$newfilename;
    					if(!file_exists($save)){
    						list($width_orig, $height_orig) = getimagesize($_FILES[$fileName]['tmp_name']);
    						if($maxH == null){
    							if($width_orig < $maxW){
    								$fwidth = $width_orig;
    							}else{
    								$fwidth = $maxW;
    							}
    							$ratio_orig = $width_orig/$height_orig;
    							$fheight = $fwidth/$ratio_orig;
    							
    							$blank_height = $fheight;
    							$top_offset = 0;
    								
    						}else{
    							if($width_orig <= $maxW && $height_orig <= $maxH){
    								$fheight = $height_orig;
    								$fwidth = $width_orig;
    							}else{
    								if($width_orig > $maxW){
    									$ratio = ($width_orig / $maxW);
    									$fwidth = $maxW;
    									$fheight = ($height_orig / $ratio);
    									if($fheight > $maxH){
    										$ratio = ($fheight / $maxH);
    										$fheight = $maxH;
    										$fwidth = ($fwidth / $ratio);
    									}
    								}
    								if($height_orig > $maxH){
    									$ratio = ($height_orig / $maxH);
    									$fheight = $maxH;
    									$fwidth = ($width_orig / $ratio);
    									if($fwidth > $maxW){
    										$ratio = ($fwidth / $maxW);
    										$fwidth = $maxW;
    										$fheight = ($fheight / $ratio);
    									}
    								}
    							}
    							if($fheight == 0 || $fwidth == 0 || $height_orig == 0 || $width_orig == 0){
    								die("FATAL ERROR REPORT ERROR CODE [add-pic-line-67-orig] to <a href='http://www.atwebresults.com'>AT WEB RESULTS</a>");
    							}
    							if($fheight < 45){
    								$blank_height = 45;
    								$top_offset = round(($blank_height - $fheight)/2);
    							}else{
    								$blank_height = $fheight;
    							}
    						}
    						$image_p = imagecreatetruecolor($fwidth, $blank_height);
    						$white = imagecolorallocate($image_p, $colorR, $colorG, $colorB);
    						imagefill($image_p, 0, 0, $white);
    						switch($filetype){
    							case "gif":
    								$image = @imagecreatefromgif($_FILES[$fileName]['tmp_name']);
    							break;
    							case "jpg":
    								$image = @imagecreatefromjpeg($_FILES[$fileName]['tmp_name']);
    							break;
    							case "jpeg":
    								$image = @imagecreatefromjpeg($_FILES[$fileName]['tmp_name']);
    							break;
    							case "png":
    								$image = @imagecreatefrompng($_FILES[$fileName]['tmp_name']);
    							break;
    						}
    						@imagecopyresampled($image_p, $image, 0, $top_offset, 0, 0, $fwidth, $fheight, $width_orig, $height_orig);
    						switch($filetype){
    							case "gif":
    								if(!@imagegif($image_p, $save)){
    									$errorList[]= "PERMISSION DENIED [GIF]";
    								}
    							break;
    							case "jpg":
    								if(!@imagejpeg($image_p, $save, 100)){
    									$errorList[]= "PERMISSION DENIED [JPG]";
    								}
    							break;
    							case "jpeg":
    								if(!@imagejpeg($image_p, $save, 100)){
    									$errorList[]= "PERMISSION DENIED [JPEG]";
    								}
    							break;
    							case "png":
    								if(!@imagepng($image_p, $save, 0)){
    									$errorList[]= "PERMISSION DENIED [PNG]";
    								}
    							break;
    						}
    						@imagedestroy($filename);
    					}else{
    						$errorList[]= "CANNOT MAKE IMAGE IT ALREADY EXISTS";
    					}	
    				}
    			}		
    		}else{
    			$errorList[]= "NO FILE SELECTED";
    		}
    		if(!$match){
    		   	$errorList[]= "File type isn't allowed: $filename";
    		}
    		if(sizeof($errorList) == 0){
    			return $fullPath.$newfilename;
    		}else{
    			$eMessage = array();
    			for ($x=0; $x<sizeof($errorList); $x++){
    				$eMessage[] = $errorList[$x];
    			}
    		   	return $eMessage;
    		}
    	}
    	
    	$filename = strip_tags($_REQUEST['filename']);
    	$maxSize = strip_tags($_REQUEST['maxSize']);
    	$maxW = strip_tags($_REQUEST['maxW']);
    	$fullPath = strip_tags($_REQUEST['fullPath']);
    	$relPath = strip_tags($_REQUEST['relPath']);
    	$colorR = strip_tags($_REQUEST['colorR']);
    	$colorG = strip_tags($_REQUEST['colorG']);
    	$colorB = strip_tags($_REQUEST['colorB']);
    	$maxH = strip_tags($_REQUEST['maxH']);
    	$desiredname = strip_tags($_REQUEST['desiredname']);
    	
    	$filesize_image = $_FILES[$filename]['size'];
    	if($filesize_image > 0){
    		$upload_image = uploadImage($filename, $maxSize, $maxW, $fullPath, $relPath, $colorR, $colorG, $colorB, $maxH, $desiredname);
    		if(is_array($upload_image)){
    			foreach($upload_image as $key => $value) {
    				if($value == "-ERROR-") {
    					unset($upload_image[$key]);
    				}
    			}
    			$document = array_values($upload_image);
    			for ($x=0; $x<sizeof($document); $x++){
    				$errorList[] = $document[$x];
    			}
    			$imgUploaded = false;
    		}else{
    			$imgUploaded = true;
    		}
    	}else{
    		$imgUploaded = false;
    		$errorList[] = "File Size Empty";
    	}
    ?>
    <?php
    	if($imgUploaded){
    		echo '<img src="images/success.gif" width="16" height="16" border="0" style="marin-bottom: -4px;" /> Success!<br /><img src="'.$upload_image.'" border="0" />';
    	}else{
    		echo '<img src="images/error.gif" width="16" height="16px" border="0" style="marin-bottom: -3px;" /> Error(s) Found: ';
    		foreach($errorList as $value){
    	    		echo $value.', ';
    		}
    	}
    ?>
    
    PHP:
    I didn't check upload function to work , I just modified it to use file name from submitted form.
     
    AsHinE, Nov 8, 2009 IP
  7. DylanM

    DylanM Active Member

    Messages:
    150
    Likes Received:
    5
    Best Answers:
    0
    Trophy Points:
    58
    #7
    Ashine, you are a star! it works perfectly :)

    If you are interested, Im looking for an experienced PHP coder for an upcoming project. If you are interested, then give me a shout.

    Thanks again.
     
    DylanM, Nov 8, 2009 IP