详细信息 您现在的位置是:首页 > ThinkPHP
thinkphp结合FormData实现ajax文件上传
来源:
发布时间:2020-02-25
1710 人已围观
摘要tp5上传文件还是很方便的,但传统的上传方法好像不太友好。如何通过ajax上传文件让页面更友好呢?
前端页面:
<div class="form-group"> <label for="imgurl" class="col-sm-2 control-label no-padding-right">栏目图标</label> <div class="col-sm-6"> <input placeholder="" name="imgurl" id="imgurl" type="file"> <input type="hidden" name="imgurl2" id="imgurl2"> </div> <p class="help-block col-sm-4 red">* 必填</p> </div>
imgurl用来上传文件,imgurl2用来存在文件上传后的路径。
前端js:
$('#imgurl').change(function(){ var formData = new FormData(); formData.append("imgurl",$("#imgurl")[0].files[0]); formData.append("service",'App.Passion.UploadFile'); $.ajax({ url:"{:url('Cate/upfile')}", /*接口域名地址*/ type:'post', data: formData, contentType: false, processData: false, success:function(res){ if(res.code==0){ // alert('成功'); $('#imgurl2').val(res.imgurl); }else{ layer.msg(res.msg) } } }); });
监听imgurl,如果有文件上传。通过ajax提交,并获取上传文件路径赋值给imgurl2。
后端php上传:
public function upfile(){ //获取上传文件详情信息 $file = request()->file('imgurl'); //validate(['ext'=>'','size'=>'']) ext:判断文件的后缀,size:限制文件上传的大小 //move() 移动文件 $info = $file->validate(['ext'=>'jpg,jpeg,png,gif','size'=>2048000])->move(ROOT_PATH . 'public' . DS . 'uploads'); if($info){ //获取上传文件的详情信息 $info->getInfo(); //获取上传文件的名称 $imgurl = 'uploads'.'/'.$info->getSaveName(); $result['code'] = 0; $result['msg'] = '上传成功'; $result['imgurl'] = $imgurl; }else{ $request['code'] = 2; $result['msg'] = '上传失败'; } return $result; }
有了图片路径,整体表单提交就比较简单了。嘿嘿,希望对大家有所帮助。
站点信息
- 电话:15226178738
- QQ:1697915848
- 邮箱:1697915848@qq.com