ThinkPHP官网图片上传实例

浏览:62368 发布日期:2013/08/05 分类:技术分享
官网已经放出他们的头像实现的教程,但是说的有点少,我就详细说说,图文并茂的方式~~~~~
1:先去下载他们的demo文件夹http://www.thinkphp.cn/code/222.html

2:我整改了一下他们的规则,添加了一些自己的规则,不然无法实线我要的效果~~~
代码:$upload = new UploadFile();                                  // 实例化上传类
        $upload->maxSize = 1*1024*1024;                 //设置上传图片的大小
        $upload->allowExts = array('jpg','png','gif');             //设置上传图片的后缀
        $upload->uploadReplace = true;                 //同名则替换
        $upload->saveRule = 'uniqid';                     //设置上传头像命名规则(临时图片),修改了UploadFile上传类
        $upload->thumbRemoveOrigin = true;             //生成缩略图后是否删除原图 
        $upload->autoSub = true;                      //是否使用子目录保存上传文件  
        $upload->subType = 'date';                      //子目录创建方式,默认为hash,可以设置为hash或者date 
        $upload->dateFormat = 'Ym';                     //子目录方式为date的时候指定日期格式  
        //完整的头像路径
        $path = './avatar/';
        $upload->savePath = $path;
相信很多人看手册也能知道我修改的内容~~好了不用太多时间来解释这里。

因为一个网站不只是会有一个用户,所以我必须把那个上传文件用唯一名来保存,不能按照官方给的那么demo的一个规定的方式去保存,然后保存是用子文件夹的方式去保存的!!

3:这个就需要怎么去获取上传的文件名了,然后官网是用保存的文件名去判断图片的大小的~


这个就要考虑,图片文件名我都采取了用唯一名去保存,而不是官网的那个死的文件名去保存,这个就要去获取上传成功返回的$info里面的东西了~
如图:

返回值里面有个savename,这个就是我们需要的文件名
我们就用$info[0]['savename']去代替

这里的2个固定的文件名了,如图:


这样就把这个用TP里面的ajaxReturn返回到模版去了~~



前端模版,是用form表单提交到cropImg这个方法去,这个方法也需要去获取到上传的

我相信会有很多不同的方法去获取把,我就用我尝试的最简单的方法!
步骤:1:现在这里添加一个hidden隐藏表单


然后给他用jq的val()方法去设置值。(ps:jq方法就不解释了,咱也是小白,会一点点,刚好这里就用上了~~~)

给我隐藏表单设置值的方法如图:


然后就可以在cropImg方法里面去接收到图片了,
官方放出的实例是不可以用I方法去接收的,所以我就用$this->_post('picname')这么去接收到传递过来的值~~

然后在把他分割,因为我只需要文件名部分:$picName = $this->_post('picName');
$picName = explode('/',$picName);
然后我们重写文件目录//头像目录地址
        $path = './avatar/'.$picName[3].'/';//第三个是文件的子文件的名称
重写要保存的要保存的图片//要保存的图片
$real_path = $path.$picName[4];//第四个是文件名
重写要保存的要保存的图片//临时图片地址
$real_path = $real_path;
如图:


然后你现在试试上传的结果!!
是不是保存的文件名不对~~不对就对了
要把$picName[4]在进行分割一下explode('.',$picName[4])//这样返回的就是除后缀名的文件名了,然后就可以直接保存了

现在就会有四个文件


现在最后一步:
用@unlink()这个去删除原图 //看有些人需求啊,假如不需要就不用删除

用法:@unlink($pic_path);//删除临时文件至此,上传应该大家照着我的做,应该都上传成功了,也许大家有不同的方法都可以实线,编程也是这个思想,每个人都有不同的想法去实现一个效果,要是我说的不好,不合理,不对的地方,欢迎大家批评指出,但是谢绝辱骂~~~谢谢
最佳答案
评论() 相关
后面还有条评论,点击查看>>