在做项目实际开发中,会经常遇到文件上传,比如图片。用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生成图片成功。