cakephp2之前 图片的上传用MeioUpload Behavior 之后cakephp2.x使用 upload plugin 实现,该链接https://github.com/josegonzalez/upload就其应用作了详细说明;本人就其简单应用做介绍;
在制作网站时,想让图片上传管理成单独模块,而不是upload plugin上举例的附加在其他控制器之上,所以建立了单独的MVC,可上传图片,参看上传图片,通过删除数据库中记录实现图像的删除(但对应产生的目录删除不掉)其默认产生路径如:files/模型名/字段名(存储文件名)/目录名(自动产生的ID一致)/abc.jpg 其关键实现点如下:
1- 下载插件: http://github.com/josegonzalez/upload/zipball/master
- 解压并放置到
app/Plugin
- 重命名为
Upload
或其他
2.
配置app/Config/bootstrap.php
文件
CakePlugin::load('Upload');
或CakePlugin::loadAll();
3.创建如下数据库CREATE table users ( `id` int(10) unsigned NOT NULL auto_increment, `username` varchar(20) NOT NULL, `photo` varchar(255) DEFAULT NULL, `photo_dir` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`));如无photo_dir字段不能完成图片的删除
4.利用CAKE bake命令 产生对应的MVC 在创建VC时创建为管理员模式(admin_index.ctp等)
5.在模型中设置如下:<?phpclass User extends AppModel { public $actsAs = array( 'Upload.Upload' => array( 'photo' => array( 'fields' => array( 'dir' => 'photo_dir' ) ) ) );}
6.修改VIEW中admin_add.ctp 删除自动产生记录添加,变为
<?php echo $this->Form->create('User', array('type' => 'file')); ?>
<?php echo $this->Form->input('User.username'); ?>
<?php echo $this->Form->input('User.photo', array('type' => 'file')); ?>
<?php echo $this->Form->input('User.photo_dir', array('type' => 'hidden')); ?>
<?php echo $this->Form->end(); ?>
7.删除VIEW中edit.cpt 修改admin_view.ctp 添加<img src="<? echo '/files/users/photo/'.$user['user'][''photo_dir'].'/'.$user['user']['photo'];?>" alt="" /> 可查看上传的图片
8.删除对应记录,上传的图片也会删除,但'photo_dir'所指定的目录不删除,如果上传,或删除多个文件,冗余的目录太多好,但删除文件其实通过目录控制,又不能不用。