2016-08-05 88 views
0

我有一個表單,用戶上傳圖像,然後圖像通過Ajax傳遞給PHP。將圖像上傳到服務器後,PHP會將$target_file回顯到Ajax。 $target_file實質上是圖像的URL。 Ajax將採用該變量,然後通過相同形式的「只讀」輸入文本框顯示它。經過測試,我已經成功上傳圖片。唯一的問題是當成功上傳圖像時,PHP腳本的整個代碼將顯示在「只讀」輸入框中,而不是應該顯示圖像URL的$target_file變量。Ajax返回值顯示代碼

這是我有:

HTML

<form class="image_upload" method="post" action="ajax.php"> 
    <input name="server_upload" type="file"> 
    <input type="text" name="image_url" readonly> 
    <input type="submit" value="UPLOAD TO SERVER"> 
</form> 

阿賈克斯

$('.image_upload').on('submit', function(e) { 
     e.preventDefault(); 
     e.stopImmediatePropagation(); 
     if ($('.image_upload').valid()) 
     { 

      $.ajax({ 
       type: 'POST', 
       url: 'ajax.php', 
       data: new FormData(this), 
       processData: false, 
       contentType: false, 
       success: function(data) { 
        $('input[name=image_url]').val(data); 
       } 
      }) 
    } 
}) 

PHP

if (isset($_FILES["server_upload"])) 
    { 
     $name = $_FILES["server_upload"]["name"]; 
     $tempName = $_FILES["server_upload"]["tmp_name"]; 
     $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name"; 
     if (getimagesize($target_file) == true) 
     { 
      $ext = pathinfo($name, PATHINFO_EXTENSION);  
      $name = basename($name, "." . $ext); 
      $name = $name . uniqid() . "." . $ext; 
      $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name"; 
     } 

     move_uploaded_file($tempName, $target_file); 
     echo $target_file; 
    } 

如何解決此問題,以便顯示URL?爲什麼它打印出我所有的PHP代碼?

回答

3

.php文件通常是HTML文件,其中包含嵌入式 PHP。 PHP的嵌入部分必須使用<?php開始並且?>結束標記爲PHP。因此,把那些在你的代碼,以便您的代碼運行,而不是被視爲HTML文本:

<?php 
if (isset($_FILES["server_upload"])) 
    { 
     $name = $_FILES["server_upload"]["name"]; 
     $tempName = $_FILES["server_upload"]["tmp_name"]; 
     $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name"; 
     if (getimagesize($target_file) == true) 
     { 
      $ext = pathinfo($name, PATHINFO_EXTENSION);  
      $name = basename($name, "." . $ext); 
      $name = $name . uniqid() . "." . $ext; 
      $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name"; 
     } 

     move_uploaded_file($tempName, $target_file); 
     echo $target_file; 
    } 
?> 
+0

我不敢相信我忘了說!它現在可以正常工作!我會盡快接受你的回答:) – user2896120

0

也就是說,如果你不具備某些類型的網絡服務器一樣阿帕奇nginx的發生時執行PHP腳本或如果提到的網絡服務器不知道如何處理PHP文件。在這種情況下,php文件將被視爲純文本文件。