剖析Form表单的文件上传功能

<form class="form-horizontal" action="{:url('admin/Configconfig_conflist')}" method="post" enctype="multipart/form-data">
<input style='float:left;padding-right: 20px;width:300px;' class='form-control' value='".$v['value']."' name='".$v['ename']."' type='file'>
</form>

前端用html显示,注意form表单中有关enctype="multipart/form-data"属性,主要是对图片的上传,如果没有此属性,无法获得file的值。

当加了enctype="multipart/form-data"属性后,thinkphp5可以获取到提交到的file

if($request->isPost()){
        $data=$request->param();

        $dataFile=$_FILES;
        // dump($data);
        // dump($dataFile);die;
        foreach ($dataFile as $k => $v) {
            //$k存储的是在input 填写的name ,$v['name']是上传文件的名字
            if($v['name']!=''){//判断是否有文件被选择
                $ModelConfig=new ConfigTab;
                $data[$k]=$ModelConfig->upload($k);  //有文件就调用model上传文件,然后给$data数组增加一个一个元素
            }
        }
        $ModelConfig=new ConfigTab;
        $isUpdate=$ModelConfig->updata_config_value($data);
        if($isUpdate){
            $this->success('修改配置成功');
        }
        // dump($data);die;
        return ;
    }

上面$data主要是获取表单中不是file类型的输入框的name,如果要获取上存file类型的thinkphp5可以通过$_FILEStype格式是file