2015-05-03 17 views
5

Ben JQuery'nın AJAX şeyi kullanarak bir dosya yüklemesini yapmaya çalışıyorum ve bu bana da işlemek için bu PHP kodu kullanıyorum 500.JQuery AJAX Dosya Yükleme Hatası Yani 500

$(function() { 
    $('form').submit 
    (
     function() 
     { 
      $.ajax({ 
       type: 'POST', 
       url: 'photochallenge/submit.php', 
       data: new FormData(this), 
       processData: false, 
       contentType: false, 
       success: function(data) { 
        Materialize.toast(data, 4000); 
       } 
      }); 
      return false; 
     } 
    ); 
}); 

hatayı veren tutar dosya yükleme:

<?php 
$target_dir = "uploads/"; 
$target_file = null; 
$uploadOk = 1; 
$response = "Please choose an image"; 
// Check if image file is a actual image or fake image 
if(isset($_POST["pic"])) { 
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
    if($check !== false) { 
     $uploadOk = 1; 
    } else { 
     $response = "File is not an image."; 
     $uploadOk = 0; 
    } 


    // Check file size 
    if ($uploadOk == 1 && $_FILES["fileToUpload"]["size"] > 500000) { 
     $response = "Sorry, your file is too large."; 
     $uploadOk = 0; 
    } 

    // Check if $uploadOk is set to 0 by an error 
    if ($uploadOk == 0) { 

    // if everything is ok, try to upload file 
    } else { 
     //find target file 
     $found = false 
     $tmp = 0 
     while(!$found) { 
      $target_file = $target_dir . $tmp . ".png"; 
      if(file_exists($target_file)) { 
       $tmp = $tmp + 1; 
      } else { 
       $found = true; 
      } 
     } 

     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
      $response = "Thank you for your submission!"; 
      shell_exec("python log.py ".$_POST["firstname"]." ".$_POST["lastname"]." ".$target_file); 
     } else { 
      $response = "Sorry, there was an error uploading your file."; 
     } 
    } 
} 

echo $response; 
?> 

Ne yazık ki, gerçek sorunun nerede olduğunu bağlantısını serbest olamaz, ama umarım bu kod sorunu çözmeye yardımcı olmak yeterlidir. Başka ayrıntılara ihtiyaç varsa, lütfen bana bildirmekten çekinmeyin.

+0

i ajax çağrısında kullanmaya çalıştığınız dosyadaki izinler ile başlamak istiyorum. Yazmaya çalıştığınız herhangi bir dizinde bu izin iznini aldıktan sonra, web sunucusunun yazma izinleri olması gerekir. Özellikle, kod bakarak shell_exec php.ini, – Chris

+0

içinde birçok ana bilgisayar devre dışı bırakmak istiyorum bir işlev gibi görünüyor http 500 hata veya bazı iç mantık - 500 hatası? –

+2

sunucunun hata günlüğünü kontrol edin. Büyük olasılıkla sınırın üstünde dosya yüklüyorsunuz. – Tejas

cevap

1

".htaccess" kullanmıyorsanız, sorun hızlı-cgi olarak kullanıyorsanız, uygulamayı kilitleyen shell_exec'da olabilir.

Ekle Bu hattı ve Senaryonu perfom: PHP'de

shell_exec("python log.py ".$_POST["firstname"]." ".$_POST["lastname"]." ".$target_file); 

kullanma yorumlar:

//shell_exec("python log.py ".$_POST["firstname"]." ".$_POST["lastname"]." ".$target_file);