TP6的文件上传相较于之前的版本有些变化,用法变了,也相对的更灵活了。以下是简单的图片上传。

有问题可以在下面留言
前端代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="" enctype="multipart/form-data" method="post"> <input type="file" name="img" /> <br> <input type="submit" value="上传" /> </form> </body> </html>
配置文件:filesystem.php
<?php
return [
// 默认磁盘
'default' => env('filesystem.driver', 'local'),
// 磁盘列表
'disks' => [
'local' => [
'type' => 'local',
'root' => app()->getRuntimePath() . 'storage',
],
'public' => [
// 磁盘类型
'type' => 'local',
// 磁盘路径
'root' => app()->getRootPath() . 'public/uploads',
// 磁盘路径对应的外部URL路径
'url' => '/uploads/',
// 可见性
'visibility' => 'public',
],
// 更多的磁盘配置信息
],
];后端代码:
验证参数说明
fileSize上传文件的最大字节
fileExt文件后缀,多个用逗号分割或者数组
fileMime文件MIME类型,多个用逗号分割或者数组
image验证图像文件的尺寸和类型
public function upload(){
if(request()->isPost()){
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file('img');
try {
// 使用验证器验证上传的文件
validate(['file' => [
// 限制文件大小(单位b),这里限制为4M
'fileSize' => 4 * 1024 * 1024,
// 限制文件后缀,多个后缀以英文逗号分割
'fileExt' => 'gif,jpg,png'
]])->check(['file' => $file]);
// 上传到本地服务器
$savename = \think\facade\Filesystem::disk('public')->putFile('img', $file);
if($savename){
// 拼接路径
$path=\think\Facade\Filesystem::getDiskConfig('public', 'url').str_replace('\\', '/', $savename);
$data['img']=$path;
$res=Db::name('message')->order('id', 'desc')->insert($data);
if($res){
return json(['code'=>200,'msg'=>'添加成功']);
}else{
return json(['code'=>500,'msg'=>'添加失败']);
}
}
// echo $savename;
} catch (think\exception\ValidateException $e) {
// echo $e->getMessage();
return json(['code'=>500,'msg'=>$e->getMessage()]);
}
}
return View::fetch();
}
关于简忆
简忆诞生的故事



粤ICP备16092285号
文章评论(0)