您现在的位置是:首页> 网站开发> ThinkPHP
ThinkPHP5开发项目时,利用jQuery的Ajax异步上传图片并实时预缆
- 6010人已阅读
- 时间: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同步异步执行区别