<script type="text/javascript">
$(function() {
$('#file_upload').uploadify({
'swf' : '/Public/js/uploadify.swf',
'uploader' : '/Index/uploadify',
'buttonText' : '上传头像',
'onUploadSuccess' : function(file, data, response) {
$('#image').attr('src','/Public/images/130_'+data);
$('#pic').val(data);
},
});
});
</script>这一步,实际上直接复制插件中的uploadify.php中的代码到控制中也是能接收图片并上传的,但不太好使(比如没有重命名、不能生成多张规格图片等),所以我控制器直接用了Thinkphp的方法,还有要解释下,onUploadSuccess方法是在文件上传成功后执行的方法,我这里是把默认显示的图片的src替换掉,以实时显示预览图,并且由于上传图片只是把图片传上去了,但并没有更新数据库,所以要把图片名赋给一个隐藏表单,在点击保存时再更新数据库。(这样做似乎不科学,但我想不出更好的办法了)public function uploadify()
{
if (!empty($_FILES)) {
import("@.ORG.UploadFile");
$upload = new \Org\UploadFile();
$upload->maxSize = 2048000;
$upload->allowExts = array('jpg','jpeg','gif','png');
$upload->savePath = "./Public/images/";
$upload->thumb = true; //设置缩略图
$upload->imageClassPath = "@.ORG.Image";
$upload->thumbPrefix = "130_,75_,24_"; //生成多张缩略图
$upload->thumbMaxWidth = "130,75,24";
$upload->thumbMaxHeight = "130,75,24";
$upload->saveRule = uniqid; //上传规则
$upload->thumbRemoveOrigin = true; //删除原图
if(!$upload->upload()){
$this->error($upload->getErrorMsg());//获取失败信息
} else {
$info = $upload->getUploadFileInfo();//获取成功信息
}
echo $info[0]['savename']; //返回文件名给JS作回调用
}
}第四步,接着,构建如下HTML代码:<div class="avatar_box"> <img id="image" src="/Public/images/130_{$u.photo}" width="130" height="130" border="0" />
<div class="upload_avatar"><input id="file_upload" name="file_upload" type="file" multiple="true" value="" /></div>
</div>显示效果如下:ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。