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());
 }
相关推荐
安东尼肉店4 小时前
Android compose屏幕适配终极解决方案
android
2501_916007474 小时前
HTTPS 抓包乱码怎么办?原因剖析、排查步骤与实战工具对策(HTTPS 抓包乱码、gzipbrotli、TLS 解密、iOS 抓包)
android·ios·小程序·https·uni-app·iphone·webview
feiyangqingyun6 小时前
基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
android·qt·ffmpeg
用户20187928316710 小时前
ANR之RenderThread不可中断睡眠state=D
android
煤球王子10 小时前
简单学:Android14中的Bluetooth—PBAP下载
android
小趴菜822710 小时前
安卓接入Max广告源
android
齊家治國平天下10 小时前
Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
android·anr
ZHANG13HAO10 小时前
Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
android
【ql君】qlexcel10 小时前
Android 安卓RIL介绍
android·安卓·ril
写点啥呢10 小时前
android12解决非CarProperty接口深色模式设置后开机无法保持
android·车机·aosp·深色模式·座舱