计算机网络/计算机科学与应用/系统/运维/开发

Tp6 单文件或多文件上传

1、 如果要实现上传功能,首先需要建立一个上传表单

<form action="http://www.tp6stu.com/upload/index" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" name="" value="上传">
</form>

2、创建一个控制器 upload.php 并使用 Request::file 来获取上传数据

// 获取 表单的上传数据
$file = Request::file('image')

3、使用Filesystem::putfile() 方法  实现上传文件,并写入指定目录

4、上传后返回的结果$info , 可以输出当前上传文件的地址

// 目录在 runtime/storage/toppic/时间/文件
$info = Filesystem::putFile('topic',$file);


<?php 
namespace app\controller;
use think\facade\Request;
use think\facade\Filesystem;
class Upload
{
    public function index(){
        $file = Request::file('image');
        //dump($file);
        $info = Filesystem::putfile('topic', $file);
        dump($info);
    }
}

5、如果想更改上传文件的默认配置,在config/filesystem.php 中配置;

'root' => app()->getRuntimePath() .'storage',

6、默认规则下,上传的文件是以日期和微秒生成的方式  date

7、生成的规则还支持另外2种方式 md5和sha1

$info = Filesystem::putFile('topic',$file,'md5');

8、批量上传  使用 image[] 作为名称,并使用foreach() 遍历上传

<form action="/index/index/upload" enctype="multipart/form-data" method="post">
<input type="file" name="image[]" /> <br> 
<input type="file" name="image[]" /> <br> 
<input type="file" name="image[]" /> <br> 
<input type="submit" value="上传" /> 
</form>

控制器代码:

public function upload(){
    // 获取表单上传文件
    $files = request()->file('image');
    $savename = [];
    foreach($files as $file){
        $savename[] = \think\facade\Filesystem::putFile( 'topic', $file);
    }
}


image.png

image.png

tp6

世间最珍贵的不是“得不到”和“已失去”,而是现在能把握的幸福。

评论

^