2011-07-18 21 views
2

我試圖通過XHR請求將HTML表單的數據提交給php腳本。使用xhr發佈表單域+文件,並重新構建服務器端

我已經打不過用的代碼,我懷疑有東西做的事情後端側的問題,但可能會做一些在JavaScript不正確是如下:

var fd = new FormData(); 
fd.append("title", $('#uploadVidTitle').val()); 
fd.append("proj", $('#uploadVidProject').val()); 
fd.append("desc", $('#uploadVidDesc').val()); 
fd.append("action", $('#uploadAction').val()); 
console.log(fd); 
fd.append("uploadFile", document.getElementById('videoUpload').files[0]); 
var xhr = new XMLHttpRequest(); 
xhr.upload.addEventListener("progress", uploadProgress, false); 
xhr.addEventListener("load", uploadComplete, false); 
xhr.addEventListener("error", uploadFailed, false); 
xhr.addEventListener("abort", uploadCanceled, false); 
xhr.open("POST", "actions.php", false); 
xhr.send(fd); 

目前在php代碼中,我通過$_POST["name"]方法獲取表單內容,但無法使用$_FILES["name"]檢索文件內容。任何指針將不勝感激。

+1

可能重複的[我怎樣才能用JQuery異步上傳文件?](http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery) – Quentin

+0

我可以'在這個項目中使用jQuery ... – Elliot

+0

jQuery不是重點,許多重複問題的答案都不使用它。 – Quentin

回答

0

我覺得在服務器端的問題。 Ty this

foreach ($_FILES as $id => $val) 
     if (isset($_FILES[$id]['name']) && $_FILES[$id]['name'] != '') 
     { 
      //process files 

使用$ _FILES [$ id] ['name']檢索文件名爲我工作。

0

你可能想嘗試發送請求之前設置一些請求頭:

xhr.setRequestHeader( 「內容類型」, 「應用程序/ x-WWW的形式,進行了urlencoded」);

xhr.setRequestHeader( 「內容類型」, 「多部分/格式數據」);

在發送POST請求後,還要檢查$ _FILES超全局,以查看是否可以從中訪問任何文件。

相關問題