一.上传功能
1. 如果要实现上传功能,首先需要建立一个上传表单,具体如下:
<form action="http://localhost/tp6/public/upload"enctype="multipart/form-data" method="post"><input type="file" name="image"><input type="submit" value="确定"></form>
2. 创建一个控制器upload.php,并使用Request::file来获取上传数据:
//获取表单的上传数据
$file = Request::file('image');
然后创建一个控制器upload.php:
3. 使用Filesystem::putfile()方法,来实现上传文件,并写入指定目录;
默认保存到storage目录下。
4. 上传后返回的结果$info,可以输出当前上传文件的地址;
//目录在runtime/storage/toppic/时间/文件
$info = Filesystem::putFile('topic', $file);
默认保存到storage目录下。
5. 如果想更改上传文件的默认配置,在config/filesystem.php中配置;
'root' => app()->getRuntimePath() . 'storage',
6. 默认规则下,上传的文件是以日期和微秒生成的方式:date;
7. 生成的规则还支持另外两种方式:md5和sha1;
$info = Filesystem::putFile('topic', $file, 'md5');
但是这样子看多难受,直接用日期更好
8. 批量上传,使用image[]作为名称,并使用foreach()遍历上传;
<input type="file" name="image[]"><input type="file" name="image[]"><input type="file" name="image[]">$files = Request::file('image');$info = [];foreach ($files as $file) {$info[] = Filesystem::putFile('topic', $file);}dump($info);
9. 结合之前的验证器,我们写一个针对upload的独立验证;
//上传图片文件
$file = Request::file('image');//编写上传规则,必须是上传文件,必须是jpg.png.gif后缀
$validate = Validate::rule(['image'=> 'file|fileExt:jpg,png,gif']);//得到上传文件和规则比对
$result = $validate->check(['image'=>$file]);//通过输出地址,否则输出错误
if ($result) {$info = Filesystem::putFile('topic', $file);dump($info);} else {dump($validate->getError());}