用FormData实现无刷新页面异步上传文件
来源:互联网 发布:手机提醒软件 编辑:程序博客网 时间:2024/05/18 02:59
前端javascript:
$('#upfile').change(function(e){ var file = this.files[0]; var type = file.type.split('/')[1]; if(type != 'jpg' && type != 'jpeg' && type != 'png' && type != 'gif'){ $(this).parent('form')[0].reset(); errmsg('上传头像的格式必须为jpg,png或gif!'); return; } if(file.size > 2097152){ $(this).parent('form')[0].reset(); errmsg('头像大小不得超过2M,请重新上传'); return; } var formData = new FormData(); formData.append('file', this.files[0]); var $lay, $index; $.ajax({ url: "upload", type: "POST", dataType : 'JSON', data: formData, processData: false, // 告诉jQuery不要去处理发送的数据 contentType: false, // 告诉jQuery不要去设置Content-Type请求头 beforeSend : function(){ layer.msg("正在上传...", { icon : 16, time : 0, shade : 0.2, success : function(lay, index){ $lay = lay; $index = index; } }); }, success : function(resp){ setTimeout(function(){ var html = '<i class="layui-layer-ico layui-layer-ico'+(resp.errcode == 0 ? 1 : 2)+'"></i>'+resp.errmsg; $lay.children('.layui-layer-content').html(html); setTimeout(function(){ layer.close($index); }, 1500); }, 1000); if(resp.errcode == 0){ $('#face').attr('src', resp.logo); } } });
php处理的upload方法:
public function actionUpload(){ if(!Yii::$app->getSession()->has('user_id')){ JsonHelper::ajaxSend(1, '请先登录!'); } $uid = 0; if(self::existSession('user_id')){ $uid = self::getSession('user_id'); }else if(self::existCookie('user_id')){ $uid = self::getCookie('user_id'); } $res = NewsUsers::find()->where(['user_id' =>$uid])->one(); if(empty($res)){ JsonHelper::ajaxSend(2, '用户不存在!'); } if(empty($_FILES['file'])){ JsonHelper::ajaxSend(3, '上传头像不能为空'); } if($_FILES['file']['error'] != 0){ JsonHelper::ajaxSend(4, '上传图片出错!请重新上传!'); } if($_FILES['file']['size'] == 0){ JsonHelper::ajaxSend(5, '上传图片大小为0'); } if($_FILES['file']['size'] > 2097152){ JsonHelper::ajaxSend(6, '头像大小不得超过2M,请重新上传'); } $image = $_FILES['file']; $type = FileHelper::getFileRealType($image['tmp_name']); if(!in_array($type, ['jpg', 'jpeg', 'png', 'gif'])){ JsonHelper::ajaxSend(7, '上传头像格式必须为jpg、png或gif!'); } $info = BaseUserHelper::createProfile($image, $res['logo']); if($info['errcode'] != 0){ JsonHelper::ajaxSend(8, $info['errmsg']); } $res->logo = $info['logo']; if(!$res->save(false)){ JsonHelper::ajaxSend(9, '上传头像失败'); } $result = JsonHelper::setErrMsg(0, '上传头像成功'); $result['logo'] = UserHelper::getUserLogo($info['logo']); JsonHelper::ajaxSend($result); }
0 0
- 用FormData实现无刷新页面异步上传文件
- 利用Ajax FormData实现无刷新带进度条文件上传
- Ajax使用FormData对象实现无刷新上传文件
- 实现无刷新上传文件,使用FormData进行Ajax请求
- 基于jQuery的ajax系列之用FormData实现页面无刷新上传
- 基于jQuery的ajax系列之用FormData实现页面无刷新上传
- Ajax+FormData实现无刷新附件上传
- PHP用iframe实现文件异步上传(无刷新)
- PHP 实现页面无刷新上传文件
- 利用html5-formdata实现文件异步上传
- FormData实现文件的异步上传
- 使用FormData实现异步上传文件
- 使用PHP和HTML5 FormData实现无刷新文件上传教程
- 使用PHP和HTML5 FormData实现无刷新文件上传教程
- 通过Ajax使用FormData对象无刷新上传文件
- 通过Ajax使用FormData对象无刷新上传文件
- Ajax 使用formdata 实现 无刷新表单上传
- 无页面刷新上传文件
- 开源深度学习框架Caffe在Ubuntu14.04下的搭建
- excle 数据导入数据库
- 二叉树的创建与遍历
- python 插入mysql数据
- https和http的区别
- 用FormData实现无刷新页面异步上传文件
- EDID 解读
- vsftp时间差8个小时的解决方法
- 如何在web页面里调起App:几种常见的hybrid通信方式
- Android Matrix
- maven中的SpringMvc项目实践
- phpcms v9 时间戳学习教程
- Ubuntu14.04+Windows7双系统安装
- 1.1什么是Arduino