cakephp2无法通过$ this-> request->数据获取文件数据

时间:2012-12-20 18:18:03

标签: ajax cakephp file-upload

通常,我们会从$ 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
    )
)

1 个答案:

答案 0 :(得分:0)

如果您想使用$this->request->data,您的帖子数据应采用蛋糕期望的格式,例如:data[Model][some_field]

你有CustomField