详细信息 您现在的位置是:首页 > ThinkPHP
thinkphp结合FormData实现ajax文件上传
来源:
发布时间:2020-02-25
1885 人已围观
摘要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