ThinkPHP5學習記錄-上傳文件

1、控制器定義

文件上傳使用ThinkPHP5內置的think\File 類庫,該類庫能夠輕鬆實現文件上傳到本地服務器,若是須要上傳到其它服務器或者平臺,則須要後續調用其它類庫或者接口。
php

2、建立項目

新建一個demo項目,部署到本地服務器上。html

首先在index\controller建立一個Upload控制器以下:thinkphp

<?php
namespace app\index\controller;
use think\Request;
class Upload extends Controller
{
    // 文件上傳表單
    public function index()
    {
        return $this->fetch();
    }
    // 文件上傳提交
    public function up(Request $request)
    {
        // 獲取表單上傳文件
        $file = $request->file('file');
        if (empty($file)) {
        $this->error('請選擇上傳文件');
        }
        // 移動到框架應用根目錄/public/uploads/ 目錄下
        $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
        if ($info) {
        $this->success('文件上傳成功:' . $info->getRealPath());
        } else {
            // 上傳失敗獲取錯誤信息
            $this->error($file->getError());
        }
    }
}複製代碼

ROOT_PATHthinkphp目錄下的配置文件base.phpbash

defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS);複製代碼

$info定義文件存儲的位置。服務器

index目錄下建立view\upload\index.htmlapp

<!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: #868686;
cursor: pointer;
} 
a:hover{
text-decoration: underline;
} 
h2{
color: #4288ce;
font-weight: 400;
padding: 6px 0;
margin: 6px 0 0;
font-size: 28px;
border-bottom: 1px solid #eee;
} 
div{
margin:8px;
} 
.info{
padding: 12px 0;
border-bottom: 1px solid #eee;
}
</style>
</head>
<body>
<h2>文件上傳示例</h2>
<FORM method="post" enctype="multipart/form-data" class="form" action="{:url('up')}">
選擇文件:<INPUT type="file" class="file" name="file"><br/>
<INPUT type="submit" class="btn" value=" 提交 ">
</FORM>
</body>
</html>複製代碼

再來更改一下虛擬主機,在Apache的httpd-vhosts.conf添加框架

#
<VirtualHost *:80>
	ServerName demo.com
	DocumentRoot "d:/wamp64/www/demo/public"
	<Directory  "d:/wamp64/www/demo/public/">
		Options +Indexes +Includes +FollowSymLinks +MultiViews
		AllowOverride All
		Require local
	</Directory>
</VirtualHost>複製代碼

重啓Apache,ide

三.上傳post

打開url demo.com/index/uploadfetch


能夠看見文件上傳成功


4、總結

在項目中可能會遇到須要文件上傳,也會遇到不少沒見過的問題,這時須要複雜問題拆分,從會的地方下手,一上來就往遠端服務上傳,若是實力容許那也是能夠的,對於小白我仍是從簡單的入手,服務端的限制,官方文檔上沒有,須要本身實踐。

相關文章
相關標籤/搜索