您现在的位置是:首页> 网站开发> ThinkPHP
ThinkPHP5开发项目时,利用jQuery的Ajax异步上传图片并实时预缆
- 4641人已阅读
- 时间:2018-10-16 08:52:23
- 分类:ThinkPHP
说点干货.先看一效果如下图:
上代码啦注意看:
HTML中
<input value="上传图片" class="btn btn-azure" onclick="pic.click();" type="button"><br /> <input id="pic" name="pic" onchange="up(this);" type="file" style="display:none"> <div id="result"></div> <div id="show"></div>
为什么这么写呢?因为file类型是不支持点击函数的.所以造了个按钮调用它
Ajax实现
function up(){ var animateimg = $("#pic").val(); //获取上传的图片名 带// var imgarr=animateimg.split('\\'); //分割 var myimg=imgarr[imgarr.length-1]; //去掉 // 获取图片名 var houzui = myimg.lastIndexOf('.'); //获取 . 出现的位置 var ext = myimg.substring(houzui, myimg.length).toUpperCase(); //切割 . 获取文件后缀 var file = $('#pic').get(0).files[0]; //获取上传的文件 var fileSize = file.size; //获取上传的文件大小 var maxSize = 4194304; //最大4MB if(ext !='.PNG' && ext !='.GIF' && ext !='.JPG' && ext !='.JPEG' && ext !='.BMP'){ parent.layer.msg('文件类型错误,请上传图片类型'); return false; }else if(parseInt(fileSize) >= parseInt(maxSize)){ parent.layer.msg('上传的文件不能超过4MB'); return false; }else{ var data = new FormData($('#form1')[0]); $.ajax({ url: "{:url('admin/Ad/uppic')}", type: 'POST', data: data, dataType: 'JSON', cache: false, processData: false, contentType: false }).done(function(ret){ if(1==ret['isSuccess']){ var result = ''; var result1 = ''; // $("#show").attr('value',+ ret['f'] +); result += '<img src="' + '__STATIC__' + ret['f'] + '" height="100">'; result1 += '<input value="' + ret['f'] + '" name="pic" style="display:none;">'; $('#result').html(result); $('#show').html(result1); layer.msg('上传成功'); }else{ layer.msg('上传失败'); } }); } }
这里面祥哥注释很清楚了.但要注意的是这里提示信息使用了layer,所以别忘了引入哦.
后台数据处理
public function uppic(){ if(Request::instance()->isAjax()){ //获取表单文件上传 $file = request()->file('pic'); // 移动到框架应用根目录 $info = $file->move(ROOT_PATH . 'public' . DS . 'static' . DS . 'uploads'); // 声明空数组用于返回值 $response = array(); if($info){ //替换\并拼接路径 $imgp= str_replace('\\','/',$info->getSaveName()); $imgpath='/uploads/'.$imgp; //返回值赋值 $response['isSuccess'] = 1; $response['f'] = $imgpath; }else{ $response['isSuccess'] = 2; } return $response; }else{ return $this->error('不好意思出错了!'); } }
还是很简单的,兼容所有浏览器,能达到实时预缆.是不是比用那些插件还不兼容强很多.
相关文章
- ThinkPHP5输入安全过滤规则
- ThinkPHP5启动事务处理.
- TP5验证码实现教程
- TP5验证器使用实例
- ThinkPHP5构造子查询的方法
- Thinkphp5整合阿里大鱼的方法超级教程看了就能用.
- Thinkphp5 显示服务器500错误
- 解决百度编辑器UEditor行号错位问题
- jQuery QQ表情插件包使用方法jquery.qqFace.js
- jquery防刷新发送验证码倒计时
- jQuery的区别:$().click()和$(document).on('click','要选择的元素',functi
- Jquery根据name属性查找
- Jquery添加删除disabled属性的方法
- jQuery根据表单name获取值的方法
- 基于jquery的表格隔行变色
- jquery鼠标移上与移出事件
- Ajax中DATA传参的写法
- async:false Ajax同步异步执行区别