15.thinkphp的上传功能

一.上传功能

  1. 如果要实现上传功能,首先需要建立一个上传表单,具体如下:
php 复制代码
<form action="http://localhost/tp6/public/upload"
 enctype="multipart/form-data" method="post">
 <input type="file" name="image">
 <input type="submit" value="确定">
 </form>
  1. 创建一个控制器upload.php,并使用Request::file来获取上传数据:
php 复制代码
//获取表单的上传数据
$file = Request::file('image');

然后创建一个控制器upload.php:

  1. 使用Filesystem::putfile()方法,来实现上传文件,并写入指定目录;

默认保存到storage目录下。

  1. 上传后返回的结果$info,可以输出当前上传文件的地址;
php 复制代码
//目录在runtime/storage/toppic/时间/文件
$info = Filesystem::putFile('topic', $file);

默认保存到storage目录下。

  1. 如果想更改上传文件的默认配置,在config/filesystem.php中配置;
php 复制代码
'root' => app()->getRuntimePath() . 'storage',
  1. 默认规则下,上传的文件是以日期和微秒生成的方式:date;

  2. 生成的规则还支持另外两种方式:md5和sha1;

php 复制代码
$info = Filesystem::putFile('topic', $file, 'md5');

但是这样子看多难受,直接用日期更好

  1. 批量上传,使用image[]作为名称,并使用foreach()遍历上传;
php 复制代码
<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);
  1. 结合之前的验证器,我们写一个针对upload的独立验证;
php 复制代码
//上传图片文件
$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());
 }
相关推荐
xiangpanf5 小时前
Laravel 10.x重磅升级:五大核心特性解析
android
robotx8 小时前
安卓线程相关
android
消失的旧时光-19438 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
dalancon9 小时前
VSYNC 信号流程分析 (Android 14)
android
dalancon9 小时前
VSYNC 信号完整流程2
android
dalancon9 小时前
SurfaceFlinger 上帧后 releaseBuffer 完整流程分析
android
用户693717500138410 小时前
不卷AI速度,我卷自己的从容——北京程序员手记
android·前端·人工智能
程序员Android11 小时前
Android 刷新一帧流程trace拆解
android
墨狂之逸才12 小时前
解决 Android/Gradle 编译报错:Comparison method violates its general contract!
android
阿明的小蝴蝶12 小时前
记一次Gradle环境的编译问题与解决
android·前端·gradle