在CakePHP 1.3中使用MeioUpload
我试图使用CakePHP1.3中的实现一些相当简单的图像上传,但我一生都无法让它工作。当我尝试在控制器中保存在CakePHP 1.3中使用MeioUpload,php,cakephp-1.3,image-uploading,Php,Cakephp 1.3,Image Uploading,我试图使用CakePHP1.3中的实现一些相当简单的图像上传,但我一生都无法让它工作。当我尝试在控制器中保存$this->data时,它会尝试保存一个常规文件数组(因为没有更好的单词),而不仅仅是文件名 以下是我正在做的: 我已将meio_upload.php放入/app/models/behaviors 在我的模型中,我将执行以下操作: var $actsAs = array( 'MeioUpload.MeioUpload' => array( 'filename
$this->data
时,它会尝试保存一个常规文件数组(因为没有更好的单词),而不仅仅是文件名
以下是我正在做的:
我已将meio_upload.php放入/app/models/behaviors
在我的模型中,我将执行以下操作:
var $actsAs = array(
'MeioUpload.MeioUpload' => array(
'filename' => array(
'dir' => 'img{DS}upload{DS}brawlers',
'allowedMime' => array('image/png'),
'allowedExt' => array('.png', '.PNG'),
'zoomCrop' => false,
'thumbsizes' => array(
'normal' => array(
'width' => 150,
'height' => 150
)
),
'default' => 'default.png',
'length' => array(
'minWidth' => 100,
'minHeight' => 100,
'maxWidth' => 150,
'maxHeight' => 150
)
)
)
);
在我看来,我得到了以下形式:
<?php
echo $this->Form->create('Brawler', array('type' => 'file'));
echo $this->Form->input('name', array(
'label' => 'Name',
'maxLength' => '45'
)
);
echo $this->Form->input('comment', array(
'label' => 'Description',
'rows' => '3'
)
);
echo $this->Form->input('author', array(
'label' => 'Your name)',
'maxLength' => '45'
)
);
echo $this->Form->input('email', array(
'label' => 'Email (will not be shown)',
'maxLength' => '45'
)
);
echo $this->Form->input(
'filename',
array(
'between'=>'<br />',
'type'=>'file',
'label' => 'Image (Max 2mb, 150x150 pixels, .png)'
)
);
echo $this->Form->end('Submit');
?>
为了子孙后代,以下是我的桌子设计:
delimiter $$
CREATE TABLE `brawlers` (
`id` int(11) NOT NULL,
`name` varchar(45) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`comment` text,
`email` varchar(45) NOT NULL,
`author` varchar(45) NOT NULL,
`filename` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8$$
当我尝试提交表格时,我得到的输出是:
app/controllers/brawlers_controller.php (line 37)
Array
(
[Brawler] => Array
(
[name] => Viking
[comment] => Herp. This is a description.
[author] => Me
[email] => me@gmail.com
[filename] => Array
(
[name] => 5.png
[type] => image/png
[tmp_name] => /storage/configuration/upload_tmp_dir/phpEF2okD
[error] => 0
[size] => 15863
)
)
)
app/controllers/brawlers_controller.php (line 37)
显然,当它试图将数组保存到filename字段时,这会失败。图像也不会保存在指定的上载目录中。似乎从来没有实际使用过meioupload行为。我如何验证这一点
你必须原谅我发布的大量代码,但我认为我向你展示一切比让你猜测我可能在做什么要好。如果有人能发现错误,那我就可以省下好几个小时的麻烦。嘿,我有你的问题的答案 那就是你必须让另一个变量说 $d1并将$this->date数组复制到该数组中,如下所示 $d1['brawlers']['name']=$this->data['brawlers']['name'] 所有ur变量 $d1['brawlers']['filename']=$this->data['brawlers']['filename']['name']
然后像$this->brawlers->save($d1)那样保存它 我不是PHP的家伙,但我不得不使用CakePHP和Meio。不久前上传。 AFAIK您需要在数据库中为图像设置4个字段:
- 文件名(您可以在中更改此文件的名称 设置)
- 迪尔
- 模版
- 文件大小
请参见我也遇到了同样的问题,您使用的MeioUpload版本与您的Cake版本不兼容。我使用了2.3版的MeioUpload
app/controllers/brawlers_controller.php (line 37)
Array
(
[Brawler] => Array
(
[name] => Viking
[comment] => Herp. This is a description.
[author] => Me
[email] => me@gmail.com
[filename] => Array
(
[name] => 5.png
[type] => image/png
[tmp_name] => /storage/configuration/upload_tmp_dir/phpEF2okD
[error] => 0
[size] => 15863
)
)
)
app/controllers/brawlers_controller.php (line 37)