通常,我们会从$ this-> request->数据中获取所需的所有数据。但如果我正在使用ajax文件上传,我无法获取该数据,例如:tmp_name,size等。
我的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'
)
我无法获取文件数据
除非我使用debug($ _ 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 :(得分:0)
如果您想使用$this->request->data
,您的帖子数据应采用蛋糕期望的格式,例如:data[Model][some_field]
你有CustomField