tp5文件上传

发布于 2019-04-15  266 次阅读


tp5文件上传

[TOC]


一个文件的上传:

表单:

```php+HTML
<h2>文件上传试例</h2>
<form action="{:url('up')}" method="post" class="form" enctype="multipart/form-data">
选择文件:<input type="file" class="file" name="file" ><br/>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

<pre><code class=""><br />up方法:

```php
//获取上传的文件
$file = $request->file('file');
//上传文件验证
//根据验证规则提示错误信息
$result = $this->validate(['file' => $file],['file' => 'require|image:100,100,png'],['file.require' => '请上传文件','file.image' => '必须是100*100的PNG格式图片']);
if(true !== $result){
$this->error($result);
}
//上传 命名的规则是按照日期 DS是系统分隔符(不同系统方向不一样)‘/’或者‘\’ 这种是以date的方式重命名文件 将文件放在文件夹下
// $info = $file->rule('date')->move(ROOT_PATH . 'public' . DS . 'upload');
//这种是以getInfo('type') . '_' . date("Y-m-d_H-i-s")重命名文件 都放在image文件夹下
$info = $file->rule(function ($file){
return $file->getInfo('type') . '_' . date("Y-m-d_H-i-s");
})->move(ROOT_PATH . 'public' . DS . 'upload');

if($info){
$this->success($info->getSaveName() . '文件上传成功:'. $info->getRealPath());
}else{
$this->error($file->getError());
}

多个文件上传:

这种方式就是上面的代码循环,还存在一些小问

表单:

```php+HTML
<h2>文件上传试例</h2>
<form action="{:url('up2')}" method="post" class="form" enctype="multipart/form-data">
选择文件:<input type="file" class="file" name="img[]" ><br/>
选择文件:<input type="file" class="file" name="img[]" ><br/>
选择文件:<input type="file" class="file" name="img[]" ><br/>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

<pre><code class=""><br />up2方法:

```php
$files = $request->file('img');
$item = [];
foreach ($files as $k=>$file){
$result = $this->validate(['file' => $file],['file' => 'require|image'],['file.require' => '请上传文件','file.image' => '必须是100*100的PNG格式图片']);
if(true !== $result){
$this->error($result);
}
$info = $file->move(ROOT_PATH . 'public' . DS . 'upload');

if($info){
$item[] = $info->getRealPath();
}else{
$this->error($file->getError());
}
}
$this->success('文件上传成功' . implode('<br/>',$item));


先这样,以后再改吧