Thinkphp3.2.2+Uploadify文件上传生成缩略图
根据网上 各位大神的资料整理,自己已经实现的用法。。
但是稍加修改,还是可以用的
1.贴出图片上传处理类 2、 将图像处理单独封装,以便于多出调用,
其中头像调用: 3、修改用户头像 4、uploadify 回调函数: 5、前端页面 js 解析php 规则: 前端实现代码: 6、 config.php 部分变量:
发布日期:2021-11-03 16:26:28
浏览次数:2
分类:技术文章
本文共 3951 字,大约阅读时间需要 13 分钟。
TP升级3.2以后,原来的文件上传类有了很大变化,上了很多规则。根据网上 各位大神的资料整理,自己已经实现的用法。。
但是稍加修改,还是可以用的
1.贴出图片上传处理类
- /**
- * 图片上传处理
- * @param [String] $path [保存文件夹名称]
- * @param [String] $thumbWidth [缩略图宽度]
- * @param [String] $thumbHeight [缩略图高度]
- * @return [Array] [图片上传信息]
- */
- Private function _upload($path,$thumbWidth = '' , $thumbHeight = '') {
- $obj = new \Think\Upload();// 实例化上传类
- $obj->maxSize = C('UPLOAD_MAX_SIZE') ;// 设置附件上传大小
- $obj->savePath =C('UPLOAD_PATH').$path.'/'; // 设置附件上传目录
- $obj->exts = C('UPLOAD_EXTS');// 设置附件上传类型
- $obj->saveName = array('uniqid','');//文件名规则
- $obj->replace = true;//存在同名文件覆盖
- $obj->autoSub = true;//使用子目录保存
- $obj->subName = array('date','Ym');//子目录创建规则,
- $info = $obj->upload();
- if(!$info) {
- return array('status' =>0, 'msg'=> $obj->getError() );
- }else{
- if($info){ //生成缩略图
- $image = new \Think\Image();
- foreach($info as $file) {
- $thumb_file = C('UPLOAD_PATH') . $file['savepath'] . $file['savename'];
- $save_path = C('UPLOAD_PATH') .$file['savepath'] . 'mini_' . $file['savename'];
- $image->open( $thumb_file )->thumb( $thumbWidth, $thumbHeight,\Think\Image::IMAGE_THUMB_FILLED )->save( $save_path );
- return array(
- 'status' => 1,
- 'savepath' => $file['savepath'],
- 'savename' => $file['savename'],
- 'pic_path' => $file['savepath'] . $file['savename'],
- 'mini_pic' => $file['savepath'] . 'mini_' .$file['savename']
- );
- //@unlink($thumb_file); //上传生成缩略图以后删除源文件
- }
- }else{
- foreach($info as $file) {
- return array(
- 'status' => 1,
- 'savepath' => $file['savepath'],
- 'savename' => $file['savename'],
- 'pic_path' => $file['savepath'].$file['savename']
- );
- }
- }
- }
- }
复制代码
其中头像调用:
- /*
- * 头像上传
- */
- Public function uploadFace (){
- if (!IS_POST) {
- E('页面不存在');
- }
- $upload = $this->_upload('Face','180','180');
- $data = json_encode($upload);
- //$data = json_decode($obj);
- //$this->ajaxReturn(json_encode($upload),'JSON');
- $this->ajaxReturn($data,'JSON');
- }
复制代码
- /*
- * 修改用户头像
- */
- Public function editFace(){
- if(!IS_POST){
- E('页面不存在');
- }
- $db = M('userinfo');
- $where = array('uid' => session('uid'));
- $field = array('face180');
- $old = $db->where($where)->field($field)->find();
- //p($_POST);
- //die;
- if ($db->where($where)->save($_POST)) {
- if (!empty($old['face180'])) {
- @unlink('./Uploads/'.$old['face180']);//删除之前的缩略图
- }
- $this->success('修改成功',U('index'));
- }else{
- $this->error('修改失败,请重试。。。');
- }
- }
复制代码
- //头像上传Uploadify插件
- $('#face').uploadify({
- swf : PUBLIC + '/Uploadify/uploadify.swf',//引入Uploadify核心flash文件
- uploader : uploadUrl,//PHP处理脚本地址
- width : 120,//上传按钮样式
- height : 30,
- buttonImage : PUBLIC + '/Uploadify/browse-btn.png',//上传按钮背景图地址
- fileTypeDesc : 'Image File', //选择文件提示文字
- fileTypeExts : '*.jpeg; *.jpg; *.png; *.gif', //允许选择的文件类型
- formData : { 'session_id' : sid},
- //上传成功后的回调函数
- onUploadSuccess : function (file, data, response){
- eval('var data=' + data);
- var data = JSON.parse(data); //由JSON字符串转换为JSON对象,json转成object
- //alert(data.pic_path);
- //alert(data.mini_pic);
- //alert(data.status);
- if(data.status){
- $('#face-img').attr('src',ROOT + '/Uploads/' + data.mini_pic);
- $('input[name=face180]').val(data.mini_pic);
- }else {
- alert(msg.info);
- return false;
- }
- }
- });
复制代码
- <script type='text/javascript'>
- var PUBLIC = '__PUBLIC__';
- var uploadUrl = '{:U("Common/uploadFace")}';
- var sid = '{:session_id()}';
- var ROOT = '__ROOT__';
- </script>
复制代码
- <div class='form hidden'>
- <form action="{:U('editFace')}" method='post'>
- <div class='edit-face'>
- <img src="
- <if condition='$user["face180"]'>
- __ROOT__/Uploads/{$user.face180}
- <else/>
- __PUBLIC__/Images/noface.gif
- </if>" width='180' height='180' id='face-img'/>
- <p>
- <input type="file" name='face' id='face'/>
- </p>
- <p>
- <input type="hidden" name='face180' value=''/>
- <input type="submit" value='保存修改' class='edit-sub'/>
- </p>
- </div>
- </form>
- </div>
复制代码
- //图片上传
- 'UPLOAD_MAX_SIZE' => 2000000, //最大上传大小
- 'UPLOAD_PATH' => './Uploads/', //文件上传保存路径
- //'UPLOAD_PATH' => './', //文件上传保存路径
- 'UPLOAD_EXTS' => array('jpg','jpeg','gif','png'),
- 原文地址;http://www.thinkphp.cn/topic/27430.html
转载地址:https://blog.csdn.net/whulovely/article/details/68067245 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月18日 03时03分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【面试篇】Java网络编程与IO流体系
2019-04-26
【Leetcode刷题篇】leetcode84 柱状图中最大的矩形
2019-04-26
【Leetcode刷题篇】leetcode85 最大矩形
2019-04-26
【Leetcode刷题篇】leetcode124 二叉树中的最大路径和
2019-04-26
【Leetcode刷题篇】leetcode297 二叉树的序列化与反序列化
2019-04-26
【Leetcode刷题篇】leetcode301 删除无效的括号
2019-04-26
【Leetcode刷题篇】leetcode239 滑动窗口最大值
2019-04-26
【Leetcode刷题篇】leetcode76 最小覆盖子串
2019-04-26
【Leetcode刷题篇】leetcode10 正则表达式匹配
2019-04-26
【Leetcode刷题篇】leetcode32 最长有效括号
2019-04-26
【Leetcode刷题篇】leetcode128 最长连续序列
2019-04-26
【Leetcode刷题篇】leetcode72 编辑距离
2019-04-26
【Leetcode刷题篇】leetcode312 戳气球
2019-04-26
前后端分离如何使用spring boot处理跨域请求
2019-04-26
【Leetcode刷题篇】leetcode283 移动零
2019-04-26
【Leetcode刷题篇】leetcode611 有效三角形的个数
2019-04-26
【Leetcode刷题篇】leetcode26 删除排序数组中的重复项
2019-04-26
【大话Java面试】-如何通俗易懂的理解Redis的分布式寻址算法hash slot?
2019-04-26
【大话Java面试】-如何通俗易懂的理解单例模式?
2019-04-26
【大话Java面试】请列出Java中几个常用的设计模式?
2019-04-26