Загрузить картинку после загрузки с использованием PHP и Jquery submit? не работает - PullRequest
0 голосов
/ 31 октября 2011

Я хочу отобразить изображение, как только пользователь загрузит изображение с помощью php и Jquery?Я попробовал следующий код.Это не работает?Любые исправления?

Мой файл index1.php

   <script language="javascript"> 
   <?php
   if(isset($_FILES['image']))
   {
   $file_name = $_FILES['image']['name'];
   $file_tmp = $_FILES['image']['tmp_name']; 
   }
   $picture= $file_tmp."/".$file_name;
   ?>
   </script>
   <html>
   <head>
   Disp
   </head>
   <body>
   <form name="example" action ="index1.php" method="post" enctype="multipart/form-data">    
   Choose an image
   <input type = "file" name="image" />
   <input type="submit" value="submit"/>
   </form>
   <div id="content">
   The uploaded picture must come here
   </div>
   <script type="text/javascript" src="js/jquery.js"></script>
   <script type="text/javascript" src="js/imagedisplay.js"></script> 

   </body>
   </html>

Мой файл jquery - imagedisplay.js

   $(document).ready(function(){
   $('input[type="file"]').change(function(){
   $(this).parent().submit();       
   $("#content").html('<img src="<?php echo $picture; ?>" >');

   });
   });
Thanks in advance.

Ответы [ 3 ]

0 голосов
/ 31 октября 2011

Ваша проблема в том, что вы не понимаете, что такое PHP.Это серверный язык, препроцессор.Как только страница загружена и отослана пользователю, весь php пропадает, потому что вся работа, которую он выполняет, выполняется на стороне сервера.Следовательно, препроцессор.

Что вам нужно сделать, это создать отдельный PHP-файл, который принимает изображение, отправленное из jQuery в качестве параметра, возвращает метаданные для него и публикует его в этом файле.

0 голосов
/ 31 октября 2011

Вам не нужно это внутри события изменения:

$("#content").html('<img src="<?php echo $picture; ?>" >');

Поскольку ваше событие изменения только что повторно отправило страницу.Вы должны сделать некоторую форму оператора if, где, если установлен $ picture, затем показать этот код:

 <?php if ($picture): ?>
    <script type="text/javascript"> 
        $("#content").html('<img src="<?php echo $picture; ?>">'); 
    </script>
<?php endif; ?>

EDITED

Кроме того, скопируйте файл tmpв папку, которую ваш веб-сервер (apache) может прочитать:

if(isset($_FILES['image'])) {
    $file_name = $_FILES['image']['name']; 
    $file_tmp = $_FILES['image']['tmp_name'];
    $newDir =  "/webdir-on-file-system";
    $staticUrl = "http://static.url";
    move_uploaded_file($file_tmp, $newDir . "/" .$file_name);
    $picture = $staticUrl . "/" .$file_name;
}

Кроме того, убедитесь, что у вас есть соответствующие разрешения для копирования в $ newDir

0 голосов
/ 31 октября 2011

Вызовите скрипт в самом PHP - вы не можете запустить код php, например <?php echo $picture; ?> в файле JS, просто используйте:

echo '<script type="text/javascript"> /* imagedisplay.js content */ </script>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...