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