在我的表格上我有一个上传输入
echo $this->Form->input('imagem', array('type'=>'file'));
当它试图减小尺寸时,键入并加载“imagem”输入中的所有数组数据,它根本就不能。
function uploadImagem() {
$file = $this->data['Produto']['imagem'];
print_r($file);
if ($file['error'] === UPLOAD_ERR_OK) {
$id = String::uuid();
if (move_uploaded_file($file['tmp_name'], APP.'uploads'.DS.$id)) {
$this->data['Upload']['id'] = $id;
$this->data['Upload']['user_id'] = $this->Auth->user('id');
$this->data['Upload']['filename'] = $file['name'];
$this->data['Upload']['filesize'] = $file['size'];
$this->data['Upload']['filemime'] = $file['type'];
return true;
}
}
return false;
}
当我打印$文件时,它应显示“Array()”但它正在检索文件的名称。
如果我尝试使用/打印$this->data['Produto']['imagem']['name']
或$this->data['Produto']['imagem']['error']
,它只会给我一个错误
非法字符串偏移'name'
有人可以告诉我如何使用Cakephp正确上传!?
答案 0 :(得分:3)
您的$_FILE
只是一个文件名而非数组这一事实表明您的表单没有enctype="multipart/form-data"
。
使用Cake,您可以使用FormHelper
(http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#options-for-create):
<?= $this->Form->create('Mymodel', array('type' => 'file')) ?>
另外,为了管理CakePHP中的文件上传,我建议你使用这个很棒的插件:https://github.com/josegonzalez/cakephp-upload