企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
##上传文件 ThinkPHP5.0对文件上传的支持更加简单。 假设表单代码如下: ~~~ <form action="/index/index/upload" enctype="multipart/form-data" method="post"> <input type="file" name="image" /> <br> <input type="submit" value="上传" /> </form> ~~~ 然后在控制器中添加如下的代码: ~~~ public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 移动到框架应用根目录/public/uploads/ 目录下 if($file){ $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads'); if($info){ // 成功上传后 获取上传信息 // 输出 jpg echo $info->getExtension(); // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg echo $info->getSaveName(); // 输出 42a79759f284b767dfcb2a0197904287.jpg echo $info->getFilename(); }else{ // 上传失败获取错误信息 echo $file->getError(); } } } ~~~ move方法成功的话返回的是一个\\think\\File对象,你可以对上传后的文件进行后续操作 ## \## 多文件上传 如果你使用的是多文件上传表单,例如: ~~~ <form class="form form-horizontal" method="post" action="{:url('admin/article/addArticle')}" enctype="multipart/form-data"> <div class="row cl"> <label class="form-label col-xs-4 col-sm-2">图集:</label> <div class="formControls col-xs-8 col-sm-9"> <input id="file-0" type="file" multiple class="file" name="path[]" > </div> </div> <div class="row cl"> <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-2"> <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;"> </div> </div> </form> ~~~ 控制器代码可以改成: ~~~ public function addArticle() { //判断提交的方式 if(\request()->isPost()){ //多图上传 $arryFile =\request()->file("path"); $arrImg=[]; foreach ($arryFile as $File){ $pathImg=""; //移动文件到框架应用更目录的public/uploads/ $info = $File->move(ROOT_PATH . 'public' . DS . 'upload' . DS . 'article' . DS . date('Y') . DS . date('m-d'),md5(microtime(true))); if ($info) { $pathImg = "/public/upload/article/" . date('Y') . '/' . date('m-d') . '/' . $info->getFilename(); } else { //错误提示用户 return $this->error($File->getError()); } // $result["img_url"] $arrImg[]= $pathImg; } $insert_data["img_url"]=implode(",",$arrImg); Db::name("articles")->insert($insert_data); } return $this->fetch("article-add"); } ~~~ 上传验证 支持对上传文件的验证,包括文件大小、文件类型和后缀: ~~~ public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 移动到框架应用根目录/public/uploads/ 目录下 $info = $file->validate(['size'=>15678,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'uploads'); if($info){ // 成功上传后 获取上传信息 // 输出 jpg echo $info->getExtension(); // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg echo $info->getSaveName(); // 输出 42a79759f284b767dfcb2a0197904287.jpg echo $info->getFilename(); }else{ // 上传失败获取错误信息 echo $file->getError(); } } ~~~