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
    )
)
4

1 回答 1

0

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

你有CustomField

于 2012-12-21T00:25:56.583 回答