2015-06-19 55 views
0

試圖學習如何使用新的AJAX文件上傳,而不是使用iframe或良好的舊PHP僅上傳文件。我瞭解XHR請求的工作原理,並長期一直使用jQuery的$.post。但我無法得到這個。

原因:當我發佈的數據(文件,我要上傳),我只能通過$_POST全球訪問它,而不是需要$_FILES全球。下面是一些我的代碼真正快速:

<input type="file" id="file"/> 
<input type="submit" id="submit" value="Upload" /> 
$("#file").on("change",function() { 
    var file = this.files[0]; 
} 
$("#submit").click(function() { 
    var formData = new FormData(); 
    formData.append('file',file); 

    $.ajax({ 
    url: '<?php echo BASE_URL; ?>ajax/upload.php', // point to server-side PHP script 
    dataType: 'text', // what to expect back from the PHP script, if anything 
    cache: false, 
    contentType: false, 
    processData: false, 
    data: formData,       
    type: 'post', 
    success: function(php_script_response){ 
     alert(php_script_response); // display response from the PHP script, if any 
    } 
    }); 
}); 

在PHP腳本,當我var_dump $_POST,我得到的文件,但是當我var_dump $_FILES那裏什麼也沒有。我發現這些資源,但他們似乎並沒有爲我工作:填充

+0

我編輯了標題來形容您的具體問題。使用非常具體的標題有助於更多關注這個問題。我已經改進了代碼塊的格式,列出了資源(中間用'/'不太清楚),還有大寫的縮寫。 – Harry

回答

0

爲了獲得$_FILES陣列,內容類型應be multipart/form-data

試試而不是:

contentType: false, 

地說:

contentType: "multipart/form-data", 
+0

耶!這就說得通了!我怎麼做? – Joshua

+0

我編輯了我的答案,請檢查它是否可以幫助你 – taxicala

+0

Robin