思路是:在app/ceshi/fire下面有一个index操作方法来渲染显示前端文件,然后前端文件跳转到upload操作方法进行处理,成功显示"文件上传成功",失败显示错误.
首先是后台 app/ceshi/fire
<?php
namespace app\ceshi\controller;
use think\Controller;
use think\Request; class Fire extends Controller{ // 文件上传表单
public function index(){
return $this->fetch();
} // 文件上传提交
public function upload(){
// 获取表单上传文件
$file = request()->file('files'); if (empty($file)) {
$this->error('请选择上传文件');
}
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
if ($info) {
$this->success('文件上传成功');
echo $info->getFilename();
} else {
// 上传失败获取错误信息
$this->error($file->getError());
} } }
现在是前端文件:fire/index.html
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传示例</title>
<style>
body {
font-family:"Microsoft Yahei","Helvetica Neue",Helvetica,Arial,sans-serif;
font-size:16px;
padding:5px;
}.form{
padding: 15px;
font-size: 16px;
}.form .text {
padding: 3px;
margin:2px 10px;
width: 240px;
height: 24px;
line-height: 28px;
border: 1px solid #D4D4D4;
}.form .btn{
margin:6px;
padding: 6px;
width: 120px; font-size: 16px;
border: 1px solid #D4D4D4;
cursor: pointer;
background:#eee;
}.form .file{
margin:6px;
padding: 6px;
width: 220px; font-size: 16px;
border: 1px solid #D4D4D4;
cursor: pointer;
background:#eee;
}a{
color: #;
cursor: pointer;
}a:hover{
text-decoration: underline;
}
h2{
color: #4288ce;
font-weight: ;
padding: 6px ;
margin: 6px ;
font-size: 28px;
border-bottom: 1px solid #eee;
}div{
margin:8px;
}.info{
padding: 12px ;
border-bottom: 1px solid #eee;
}.copyright{
margin-top: 24px;
padding: 12px ;
border-top: 1px solid #eee;
}</style>
</head>
<body>
<h2>文件上传示例</h2>
<FORM method="post" enctype="multipart/form-data" class="form" action="{:url('upload')}">选择文件:
<INPUT type="file" class="files" name="files"><br/>
<INPUT type="submit" class="btn" value=" 提交 ">
</FORM>
</body>
</html>
显示效果:
文件上传成功: