• About Me




    Lily@Melbourne, Australia

    Login

  • Follow 静水深流 || Still waters run deep on WordPress.com
  • Archives

CakePHP-Plugins-上传工具

其实挺想以代码的方式来显示,但是这免费的页面是不支持,所以只能通过颜色来表达了。以前说过有时间要多介绍点别人的好东西,再说好记性不如烂笔头,所以有如下此文。。。

__________________________________________________________________________

上传工具

大多数的网站都提供用户端上传的功能,市面上自然也就相应地很多功能类似的工具,觉得这一个还比较好用而且更新速度比较快,不像有些个还一直停留在Cake1.3上,但文档写得过于含糊,让初学者很难一目了然。我自己是花了4个小时才安装成功的,其间满世界地找答疑(比如用翻译软件转成隔离疙瘩英语的法文),咨询了作者(作者个人网站contact断开,然后辗转到google讨论组才抓住机会),才终于搞清楚。大概隔了一个月吧,需要给另一个模块装上传,却又是忘改了一句代码,恰巧碰上服务器更新目录被冻结,再次大脑被动地休克2小时。

首先下载最新的版本,地址〉〉

把zip文件解压缩到cakephp/plugins,并且把目录名字改为 “Uploader“.

我是CakePHP2.0的,并不是作者写的那样import,正确载入的方式是
在对应的Model打头拷贝
App::uses(‘Vendor’, ‘Uploader.Uploader’);

然后在你的Model(不是Controller,一条原则就是Model越肥越好,Controller越精简越好,因为能提高运行速度)里插入如下代码:
public $actsAs = array(
Uploader.Attachment‘ => array(
jobcard_attachment‘ => array(  //在视图文件中用来接受上传文件的变量
‘baseDir’ => ‘/app/webroot/’,        //可以修改为任意目录,但一定要用绝对路径,我在这里吃药了
‘uploadDir’ => ‘files/uploads/jobcards’, //这个为相对路径
‘dbColumn’ => ‘jobcard_attachment’, //model对应数据库的字段
‘maxNameLength’ => 50, //默认是30
‘overwrite’ => true, //相同文件名时会覆盖
‘stopSave’ => true,  //如果上传不成功,自动停止保存整个表单
‘allowEmpty’ => true,
)
),
Uploader.FileValidation‘ => array(
jobcard_attachment’ => array(
‘extension’ => array(‘gif’, ‘jpg’, ‘png’, ‘jpeg’, ‘txt’,’pdf’,’zip’),  //可接受的文件格式,用户可自定义
‘filesize’ => 5242880 //文件大小不超过5M
)
)

);

Uploader.Attachment和Uploader.FileValidation是定义的行为包含许多参数可以根据需要设置,以上所设的都是最基本的,作者的文档里这方面写得很完整,有兴趣的可以去看看。至于jobcard_attachment是DB里用来存储上传文件路径及文件名的字段,这个一定要和你的视图文件里的表单名字相呼应

视图文件(add.ctp,edit.ctp)

<?php echo $this->Form->create(‘Jobcard’, array(‘enctype’ => ‘multipart/form-data’));?> //如此才可以接受多种格式(附件,图片,音频,视频等)
echo $this->Form->input(‘jobcard_attachment‘, array(‘type’=>’file’));//相呼应,格式改成file

结果:

Uploader Result

 

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: