2011-05-07 47 views
1

我正在使用Ajax file upload bt $ _FILES總是空的。

這是我的PHP頁面

include('../../inc/functions.php'); 
    $allowdExt = array("mp4","flv"); 
    $uploaddir = '../../uploads/videos/'; 
    $filename = basename($_FILES['uploadv']['name']); 
    echo "file: $uploaddir".$filename ; 
    exit; 

     $extension = getExtension($filename); 
     $extension = strtolower($extension); 

     if(!in_array($extension,$allowdExt)){ 
      $errors =1; 
     } 
     else 
     { 
      $file_name = MakeRandomChars().'.'.$extension ; 
      $newname=$uploaddir.$file_name; 
      $copied = move_uploaded_file($_FILES['uploadv']['tmp_name'], $newname); 
      if (!$copied) 
      { 
       $errors =1; 
      } 
     } 

     if($errors == 1){ 
      echo "0"; 
     }else{ 
      echo $file_name; 
     } 

,這是我的jQuery代碼:

$(function(){ 
    var btnUpload=$('#uploadVideo'); 
    var status=$('#status'); 
    new AjaxUpload(btnUpload, { 
     action: 'pages/upload-video.php', 
     name: 'uploadv', 
     onSubmit: function(file, ext){ 
      if (! (ext && /^(flv|mp4)$/.test(ext))){ 
       status.text('Only Flv,Mp4 files are allowed'); 
       return false; 

      } 
      $('#wait').fadeIn(); 
     }, 
     onComplete: function(file, response){ 
      status.text(''); 
      if(response != "0"){ 
       $('#wait').fadeOut(); 
       $('#videoIcon').fadeIn(); 
       $('#status').attr('video',response); 
      } 
     } 
    });  
}); 
+2

你怎麼知道$ _FILES是空的?你的print_r在哪裏? – dragonjet 2011-05-07 08:04:45

+0

print_r($ _ FILES): Array ( ) – T4mer 2011-05-07 09:41:26

回答

2

隨着ajaxupload你需要從原始PHP輸入獲取數據,而不是從$_FILES

您可以在這裏看到樣品:https://github.com/valums/file-uploader/blob/master/server/php.phpqqUploadedFileXhr類)

+0

感謝您的回答,bt它爲我在$ _FILES在其他頁面中工作? – T4mer 2011-05-07 08:26:26

+0

@ T4mer:'ajaxupload'通過原始輸入傳遞文件,而不是'$ _FILES'。在https://github.com/valums/file-uploader看看他們的自述文件:'這個插件使用XHR上傳帶有進度條的多個文件...' – zerkms 2011-05-07 08:29:22