Thinkphp框架下文件上传(使用自定义函数)

xiaoxiao2021-02-28  32

材料Thinkphp3.2.3

1.前台显示(单文件上传)

<!DOCTYPE html> <html> <head> <title>导入用户</title> </head> <body> <formaction="__CONTROLLER__/intoUser/"enctype="multipart/form-data" method="post"class="form-inline" role="form" style=" padding: 50px80px 0px 350px" > <!-- <div class="form-group"> <label class="sr-only" for="name">名称</label> <input type="text" class="form-control"id="name" placeholder="请输入名称"> </div> --> <div class="form-group"> <label class="sr-only" for="inputfile">文件输入</label> <input type="file"name="file_stu" /> </div> <input type="submit" class="btn btn-default" value="导入"/> </form> </body> </html>

 

2.找得到写自定义函数的文件夹新建function.php写入函数

 

<?php header('content-type:text/html;charset=utf-8'); function uploadFile($fileInfo,$uploadPath='./Public/upload',$allowExt=array('xlsx','xls')){//fileInfo获取到的上传文件信息 if($fileInfo['error']>0){ switch ($fileInfo) { case 1: $mes='文件上传过大'; break; case 4: $mes='没有选择上传文件'; break; default: $mes='文件上传失败'; break; } exit($mes); } //检测文件上传类型 $ext=pathinfo($fileInfo['name'],PATHINFO_EXTENSION); if(!in_array($ext, $allowExt)){ exit('不是Excel文件,重新上传'); } //检测文件是否是通过HTTP传来的 if (!is_uploaded_file($fileInfo['tmp_name'])) { exit('文件不是通过HTTP POST传过来的'); } if(!file_exists($uploadPath)){//如果没有这个文件夹则创建一个 mkdir($uploadPath,0777,true); chmod($uploadPath, 0777); } $uniName=md5(uniqid(microtime(true),true)).'.'.$ext;//随机生成一个文件名 防止同名替换 $destination=$uploadPath.'/'.$uniName; if(!@move_uploaded_file($fileInfo['tmp_name'], $destination)){ exit('文件移动失败'); } return $destination;//上传成功返回路径和文件名 }//uploadFile end

3.在控制器中使用自定义函数

<?php namespace Admin\Controller; use Think\Controller; class UserController extends Controller { publicfunction intoUser(){ $fileInfo=$_FILES['file_stu'];//file_stu为前端表单中input的name值(可以自定义) //var_dump($fileInfo);die; $newName=uploadFile($fileInfo);//得到参数传入函数中使用uploadFile()自定义函数 成功返回路径和名字给$newName //var_dump($newName);die; }//intoUser end }//Controller end

 

转载请注明原文地址: https://www.6miu.com/read-2450241.html

最新回复(0)