ajaxFileUpload 文件上传 php html yii2

本文介绍了一个多文件上传的实现方案,包括HTML表单设置、使用FormData处理文件数据、通过Ajax进行文件上传,以及后端PHP代码实现文件上传和目录创建。详细展示了从前端到后端的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多文件:name参数必须带[]结尾!

HTML
<input type="file" name="file_upload[]"  hidden id="file_upload" accept="image/*" multiple>
JS
			$('body').on('change','#file_upload',function () {
				if($(this).val()!==''){
					var form_data = new FormData($('#form_file_upload')[0]);
					// ajaxfileupload
					$.ajaxFileUpload({
						fileElementId:'file_upload',
						url:'/hb/caipubuzhou/upload/',
						type:'post',
						dataType:'json',
						secureuri: false,
						timeout: 3000, //超时时间:3秒
						data:{
							'_csrf':'<?=$csrf?>',
							'form_data':form_data,
						},
						success:function(msg){
							if(msg.dir_state!==false){
								if(v_buzhou.rows_buzhou[0]['src']===''){
									v_buzhou.rows_buzhou.splice(0,1);
								}
								for(i=0;i<msg['state'].length;i++){
									if(msg['state'][i]===true){
										v_buzhou.rows_buzhou.push({'title':'','src':msg['address'][i],'type':'add','pkid':'0'});
									}
								}
							}else{
								layer.alert('创建地址失败!');
							}
							if(v_buzhou.rows_buzhou.length>=3){
								auto_height();
							}
						},
						error:function(){

						}
					});
					document.getElementById('file_upload').value='';
				}
			})
PHP
 // 创建目录
    public function create_dir($type)
    {
        $msg=[];
        $msg['state']=false;
        // 绝对地址(项目路径)
        $dir=$_SERVER['DOCUMENT_ROOT'];
        // 相对地址
        $dir_xiandui='';
        // 存储地址
        switch ($type) {
            case 'hb':
                $dir_xiandui='/upload/hb/'.date('Y/').date('m/').date('d/');
                break;
            default:
                $dir_xiandui='';
                break;
        }
        //        判断储存路径是否为空
        if(!empty($dir_xiandui)){
            // 合并地址
            $dir=$dir.$dir_xiandui;
            if(!is_dir($dir)){
                mkdir($dir,'0777',true);
            }
            if(is_dir($dir)){
                $msg['state'] = true;
                $msg['path_juedui']=$dir;
                $msg['path_xiandui']=$dir_xiandui;
            }else{
                $msg['msg']='创建目录失败!';
            }
        }else{
            $msg['msg']='储存地址不存在!';
        }
        return $msg;
    }

    // file_type 文件类型
    // type存储分类
    public function upload_file($file_type=0,$type)
    {
        $msg=[];
        $msg_dir['dir'] = $this->create_dir($type);
        // 创建文件夹
        if($msg_dir['dir']['state']!==false){
            // 目录创建ok
            $msg['dir_state']=true;
            $file_rule=[];
            for($i=0;$i<count($_FILES['file_upload']['error']);$i++){
                $file_path = $msg_dir['dir']['path_juedui'];
                // 文件路径
                if(isset($file_path)){
                // 文件类型
                    switch ($file_type) {
                        case 'image':
                            $file_rule=['image/jpg','image/jpeg','image/gif','image/png'];
                            break;
                        case 'xls':
                            $file_rule=['application/vnd.ms-excel','application/wps-office.xls','image/png'];
                        default:
                            # code...
                            break;
                    }
                    //随机文件名
                    $file_name_new=time().rand(100,999).'.'.str_replace('image/','',$_FILES['file_upload']['type'][$i]);
                    if(in_array($_FILES['file_upload']['type'][$i],$file_rule)){
                        //判断文件大小,文件小于6M
                        if($_FILES['file_upload']['size'][$i]>0&&$_FILES['file_upload']['size'][$i]<(6000*1024))
                        {
                            // $item['tmp_name'] 文件上传的临时目录
                            if(move_uploaded_file($_FILES['file_upload']['tmp_name'][$i],''.$file_path.$file_name_new))
                            {
        //                        文件路径
                                $msg['address'][]=$msg_dir['dir']['path_xiandui'].$file_name_new;
        //                        文件名称
                                $msg['biaoti'][]=$file_name_new;
                                // $msg['pkid'][]=$file_name_new;
                                $msg['state'][]=true;
                            }
                            else
                            {
                                $msg['msg'][]='文件上传失败!'.$file_path.$file_name_new;
                            }
                        }
                        else
                        {
                            $msg['msg'][]='文件大小不合法!';
                        }
                    }else{
                        $msg['msg'][]='文件类型不支持';
                    }
                }else{
                    $msg['msg'][]='保存路径不存在!';
                }
            }
        }else{
            // 目录创建失败
            $msg['dir_msg']=$msg_dir['dir']['msg'];
            $msg['dir_state']=false;
        }
        return $msg;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值