tp5文件上传
[TOC]
一个文件的上传:
表单:
<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>
up方法:
//获取上传的文件
$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());
}
多个文件上传:
这种方式就是上面的代码循环,还存在一些小问
表单:
<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>
up2方法:
$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));
网友评论