上传后显示图像

时间:2015-01-05 14:00:52

标签: php

上传图片的形式简单,我想上传后显示图片。一切正常,文件也上传但照片没有显示。请帮忙。 形式:

<form name="newad" method="post" enctype="multipart/form-data" action="doctor.php">
   <input type="file" name="image">&nbsp;
   <input name="Submit" type="submit" value="Upload image">    
</form>

和php:

<?php
      //define a maxim size for the uploaded images in Kb
      define ("MAX_SIZE","5060");
      //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 errro 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 '<h2>Unknown extension!</h2>';
                $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 '<h2>You have exceeded the file size limit! Please reduce the image size to 100 Kb or less!</h2>';
                      $errors=1;
                   }

                  //we will give an unique name, for example the time in unix time format
                  $image_name=$filename;
                  //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 '<h2>Copy unsuccessful!</h2>';
                    $errors=1;
                }
             }
            }
           }

          //If no errors registred, print the success message

          if(isset($_POST['Submit']) && !$errors)
          {
              <img src="http://localhost/images/<?php echo $image_name; ?>" alt="There ya go" />
           }
    ?>

问题是我得到的错误:

  

解析错误:语法错误,意外&#39;&lt;&#39;在第65行的C:\ xampp \ htdocs \ alka.php

4 个答案:

答案 0 :(得分:4)

错误消息告诉您完全问题所在。你不能像这样混合HTML和PHP:

if(isset($_POST['Submit']) && !$errors)
{
    <img src="http://localhost/images/<?php echo $image_name; ?>" alt="There ya go" />
}

该标记需要包装在字符串文字中,并像其他任何标记一样回显。像这样:

if(isset($_POST['Submit']) && !$errors)
{
    echo "<img src=\"http://localhost/images/$image_name\" alt=\"There ya go\" />";
}

或者,如果您愿意,请:

if(isset($_POST['Submit']) && !$errors)
{
    echo '<img src="http://localhost/images/' . $image_name . '" alt="There ya go" />';
}

答案 1 :(得分:2)

问题是,你在php中使用html标签,如果条件不在主要内部。

试试这个:

  echo '<img src="http://localhost/images/' . $image_name . '" alt="There ya go" />';

您也可以参考:

if(file_exists($file)){
echo $file."</br>";
echo "<img src="<?php echo file_dir . '/' . $imageone; ?>" height="100" width="100"/>" ;

}

在这种情况下,$file将成为文件的目标路径,您可以应用与

相同的功能

在你的剧本中。

答案 2 :(得分:0)

这就是您的问题所在:

             if(isset($_POST['Submit']) && !$errors)
             {
                 <img src="http://localhost/images/<?php echo $image_name; ?>" alt="There ya go" />
             }

问题是,您在PHP代码中使用HTML语法。关闭PHP,添加HTML代码并重新打开PHP:

             if(isset($_POST['Submit']) && !$errors)
             {
             ?>
                 <img src="http://localhost/images/<?php echo $image_name; ?>" alt="There ya go" />
             <?php

             }

或在PHP中回显你的html:

             if(isset($_POST['Submit']) && !$errors)
             {
                 echo '<img src="http://localhost/images/'.$image_name.'" alt="There ya go" />';

             }

答案 3 :(得分:0)

if(isset($_POST['Submit']) && !$errors)
{
    <img src="http://localhost/images/<?php echo $image_name; ?>" alt="There ya go" />
}

该标记需要包装在字符串文字中,并像其他任何标记一样回显。像这样:

if(isset($_POST['Submit']) && !$errors)
{
    echo "<img src=\"http://localhost/images/$image_name\" alt=\"There ya go\" />";
}

或者,如果您愿意,请:

if(isset($_POST['Submit']) && !$errors)
{
    echo '<img src="http://localhost/images/' . $image_name . '" alt="There ya go" />';
}