简体   繁体   中英

Changing a Image source file using php

I want to basically make a simple picture upload, then change the first picture to the newly uploaded photo

Php code: (commented for your helping)

<?php

//define a maxim size for the uploaded images in Kb
 define ("MAX_SIZE","100"); 

//This function reads the extension of the file. It is used to determine if the file  is an     image by checking the extension.
function getExtension($str) {
     $i = strrpos($str,".");
     if (!$i) { return ""; }
     $l = strlen($str) - $i;
     $ext = substr($str,$i+1,$l);
     return $ext;
}

//This variable is used as a flag. The value is initialized with 0 (meaning no error  found)  
//and it will be changed to 1 if an errror occures.

//If the error occures the file will not be uploaded.
 $errors=0;
 //checks if the form has been submitted
 if(isset($_POST['Submit'])) 
 {

//reads the name of the file the user submitted for uploading
$image=$_FILES['image']['name'];

//if it is not empty
if ($image) 
{

//get the original name of the file from the clients machine
    $filename = stripslashes($_FILES['image']['name']);

//get the extension of the file in a lower case format
    $extension = getExtension($filename);
    $extension = strtolower($extension);

//if it is not a known extension, we will suppose it is an error and will not      upload the file,  
//otherwise we will do more tests
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") &&              ($extension != "gif")) 
    {

//print error message

echo "";

        $errors=1;
    }
    else
    {
//get the size of the image in bytes
//$_FILES['image']['tmp_name'] is the temporary filename of the file
//in which the uploaded file was stored on the server
$size=filesize($_FILES['image']['tmp_name']);

//compare the size with the maxim size we defined and print error if bigger
if ($size > MAX_SIZE*1024)
{
echo "";

$errors=1;
}
//we will give an unique name, for example the time in unix time format
$image_name=time().'.'.$extension;

//the new name will be containing the full path where will be stored (images folder)
$newname="images/".$image_name;

//we verify if the image has been uploaded, and print error instead
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied) 
{
echo "";

$errors=1;
}}}}

//If no errors registred, print the success message
if(isset($_POST['Submit']) && !$errors) 
{
echo "";
}

?>

-The Photo Div.

<div id="photo1div">
<img id="photo1" src=""  alt="No Image" width="251" height="146" />
</div>

-The Buttons (Upload and Browse)

<form name="newad" method="post" enctype="multipart/form-data"  action="">
  <table>
  <tr><td><table>
    <tr>
      <td><input type="file" name="image" /></td>
    </tr>
    <tr>
      <td><input name="Submit" id="upload" type="submit" value="Upload image"     onclick"load_images()" /></td>
    </tr>
  </table></td></tr>
  </table>
</form>

-If you have a better way I could do this (like jquery or ajax) Please by all means tell me how

The Php and all are in the same file (.php ext.)

So review:

When I click Browse and choose a image it saves to a directory folder called "image"/ then When I click submit I want it to change the Image source (photo1) to the Image I just uploaded.

Any way I can accomplish this?

Thanks -Julian

Here's my solution

In your page where you have the form elements:-

  <form id="imageUploadForm" action="storeImage.php" method="POST" enctype="multipart/form-data"> 

         <input  type="file"name="imgFile" >  

         <input type="submit value="Upload">

  </form>   

In your storeImage.php do the following

if($_SERVER["REQUEST_METHOD"]=="POST"&&isset($_REQUEST["imgFile"]))
{          
   $name=$_FILES["imgFile"]["name"];

   $tempName=$_FILES["imgFile"]["tmp_name"]; // temporary location

   $size=$_FILES["imgFile"]["size"];

   $type=$_FILES["imgFile"]["type"];

   if(($type=="image/jpg"||$type=="image/jpeg"||$type=="image/png")&&($size>0&&$size<=4096000))
   {

      $dir="thisImageFolder";  //folder name in your current directory where the file will be stored

      $fullDirectory=$dir;

      $realPath=$dir."/".$name;

       if(is_dir($fullDirectory))  //if directory exists then move the file to this plae
       {
        move_uploaded_file($tempName, $realPath);


       }
       else   //else make the directory and the move the file to this place
       {
        mkdir($fullDirectory,0777,true);

        move_uploaded_file($tempName, $realPath);

       }

         header("Location:backToMyPage.php");  //takes the user back to this page.
   }


    else
{  
  print "File not of an image type or has exceeded size limit";  
} 
}

When you get back to the page, simply use the relative path to the image and it will be loaded.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM