2015-01-05 6 views
-1

Имея простую форму для загрузки изображения, я хочу отображать изображение после загрузки. Все работает отлично, файл также загружается, но фотография не отображается. Пожалуйста, помогите. форма:Отображение изображения после загрузки

<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" /> 
      } 
    ?> 

Проблема ошибки я получаю:

Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\alka.php on line 65

+1

Использование открытие эхо => '

+0

первую ошибку я вижу donald123

ответ

2

Проблема, вы используете HTML тег внутри PHP, что не будет работать в основном внутри, если состояние.

Попробуйте это:

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 будет целевой путь файла, и вы можете применить ту же функцию,

в вашем скрипте.

+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" />'; 
} 
0

Это где ваша проблема:

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

Проблема заключается в том, что вы используете HTML синтаксис внутри вашего PHP-кода. Либо закрыть PHP, добавьте HTML-код и снова откройте PHP:

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

      } 

или повторить ваш HTML внутри PHP:

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

      } 
+0

Спасибо всем, кто помог. Я получил решение. Большое спасибо. –

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" />'; 
}