在做项目实际开发中,会经常遇到文件上传,比如图片。用ThinkPHP5框架处理图片上传,参照ThinkPHP5开发教程。
示例如下:
首先先在application/admin/controller文件夹下面定义TestImage.php文件
TestImage.php:
<?php
namespace app\admin\controller;
use think\Controller;
//创建一个类TestImage,继承基类Controller
class TestImage extends Controller
{//定义一个方法名upload_img,和view/TestImage文件夹下面的upload_img同名,提交信息时匹配文件public function upload_img(){//判断是否是post 方法提交的if(request()->isPost()){$data=input('post.');//处理图片上传//提交时在浏览器存储的临时文件名称if($_FILES['image']['tmp_name']){$data['image']=$this->upload();}//讲传入的图片写入到test_images表中,使用Thinkphp5自定义的函数insert()$add=db('test_images')->insert($data);if($add){//如果添加成功,提示添加成功。success也可以定义跳转链接,success('添加图片成功!','这里写人跳转的url')$this->success('添加图片成功!');}else{$this->error('添加图片失败!');}return;}return view();}//上传图片函数public function upload(){// 获取表单上传的文件,例如上传了一张图片$file = request()->file('image');if($file){//将传入的图片移动到框架应用根目录/public/uploads/ 目录下,ROOT_PATH是根目录下,DS是代表斜杠 / $info = $file->move(ROOT_PATH . 'public' . DS . 'static'. DS .'uploads');if($info){return $info->getSaveName();}else{// 上传失败获取错误信息echo $file->getError();die;}}}
}
在application/admin/view/test_image文件夹,upload_img.html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>图片上传</title>
<meta name="description" content="Dashboard">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--Basic Styles-->
<link href="__admin__/style/bootstrap.css" rel="stylesheet">
<link href="__admin__/style/font-awesome.css" rel="stylesheet">
<link href="__admin__/style/weather-icons.css" rel="stylesheet">
</head>
<body>
<div class="page-breadcrumbs"><ul class="breadcrumb"><li style="padding-left:11.5%">上传图片</li> </ul>
</div>
<div class="widget"><div class="widget-body"><div id="horizontal-form"><form class="form-horizontal" role="form" action="" method="post" enctype="multipart/form-data"><div class="form-group"><label for="username" class="col-sm-2 control-label no-padding-right">缩略图</label><div class="col-sm-6"><input placeholder="" name="image" type="file"></div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><button type="submit" class="btn btn-default">提交图片</button></div></div></form></div>
</div>
</div>
</body>
</html>
点击上传图片:
在文件夹下面的目录 public\static\uploads\20180725生成图片成功。