2012-12-20 44 views
0

通常,我們從$ this-> request-> data獲取所需的所有數據。但如果我使用AJAX文件上傳,我無法獲得這些數據例如:tmp_name的值,大小等

我的javascript代碼如下:

function uploadFile(file_blob_chunk, file_name, file_part, total_file_chunk, file_id) { 
fd = new FormData(); 
    fd.append("file_for_upload", file_blob_chunk); 
    fd.append("somestring", "This is some extra data"); 

    xhr = new XMLHttpRequest();    
xhr.open("POST", "files/index/" + file_id + '/' + file_part, true); 

//Onload happened after file finished uploaded 
xhr.onload = function(e) { 
    //alert(file_name + "done");  
}; 

xhr.upload.addEventListener("progress", function(evt) {   
    if (evt.lengthComputable) { 
    }}, false); 

xhr.send(fd); 
} 

和FilesController.php

public function index($file_id = null, $file_part = null) { 
    if ($this->request->is('post')) { 
     //I can't use $this->request->data, to get the file details 
    } 
} 

如果我使用

debug($this->request->data); 

我只會變得

array(
    'somestring' => 'This is some extra data' 
) 

我不能得到的文件數據

除非即時通訊使用的調試($ _ FILES),我不會得到

array(
    'file_for_upload' => array(
     'name' => 'blob', 
     'type' => 'application/octet-stream', 
     'tmp_name' => 'C:\xampp\tmp\phpAC42.tmp', 
     'error' => (int) 0, 
     'size' => (int) 9304862 
    ) 
) 
+0

轉到源? [Superglobals](http://php.net/manual/en/language.variables.superglobals.php)假設「框架」不剝奪它們。 – ficuscr

回答

0

如果你想使用$this->request->data您的文章的數據應該是格式蛋糕預計,如:data[Model][some_field]

你有CustomField

+0

我想你誤解了它,「CustomField」只是字符串...我將編輯我的帖子請檢查它 – Harts

+0

'data [Model] [some_field]'也只是一個字符串。唯一的區別是'data [Model] [some_field]'是蛋糕格式,'customField'不是。 – dogmatic69

+0

不,我的意思是如果我使用$ this-> request-> data然後我可以得到自定義字段(我將文本更改爲「somestring」)..我不會將「file_for_upload」一個 – Harts