当前位置: 首页 > news >正文

thinkphp8结合layui2.9 图片上传验证

<?php
declare (strict_types = 1);namespace app\index\validate;use think\Validate;class Upload extends Validate
{/*** 定义验证规则* 格式:'字段名' =>  ['规则1','规则2'...]** @var array*/protected $rule = ['image' => 'fileExt:jpg,png|fileSize:204800|fileMime:image/jpeg,image/png', // 文件扩展名限制为jpg, png;文件大小限制为200K;文件MIME类型限制为image/jpeg, image/png];/*** 定义错误信息* 格式:'字段名.规则名' =>  '错误信息'** @var array*/protected $message = ['image.fileExt' => '图片格式必须为jpg或png','image.fileSize' => '图片大小不能超过200K',];
}

在index应用下,创建了验证器;

<?php
declare (strict_types = 1);namespace app\index\controller;use think\Request;
use app\index\validate\Upload as ValidateUpload;
use think\facade\Filesystem as Fs;
class Upload
{public function index(){return view('/upload');}public function upload(Request $request){$file = $request->file('file');$validate = new ValidateUpload();if (!$validate->check(['image' => $file])) {return json(['code' => 1, 'msg' => $validate->getError()]);}$savename = Fs::disk('public')->putFile('', $file);// 确保路径使用正斜杠$savename = str_replace('\\', '/', $savename);return json(['code' => 0, 'msg' => '上传成功', 'data' => ['url' => '/storage/' . $savename]]);}
}

index应用下,创建了index控制器,upload方法处理了来自前端的ajax上传;

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Demo</title><!-- 请勿在项目正式环境中引用该 layui.css 地址 --><link href="//unpkg.com/layui@2.9.14/dist/css/layui.css" rel="stylesheet">
</head>
<body>
<div class="layui-upload-drag" style="display: block;" id="ID-upload-demo-drag"><i class="layui-icon layui-icon-upload"></i> <div>点击上传,或将文件拖拽到此处</div><div class="layui-hide" id="ID-upload-demo-preview"><hr> <img src="" title="上传成功后渲染" style="max-width: 100%"></div>
</div><!-- 请勿在项目正式环境中引用该 layui.js 地址 -->
<script src="//unpkg.com/layui@2.9.14/dist/layui.js"></script>
<script>
layui.use(function(){var upload = layui.upload;var $ = layui.$;// 渲染upload.render({elem: '#ID-upload-demo-drag',url: '/index/upload/upload/', // 实际使用时改成您自己的上传接口即可。accept: 'images', // 指定允许上传的文件类型exts: 'jpg|png', // 允许上传的文件后缀,不带点,多个用|分割,如果需要所有类型则把整个MIME类型写上,如image/*'done: function(res){if(res.code != 0){return layer.msg(res.msg);} else {layer.msg('上传成功');$('#ID-upload-demo-preview').removeClass('layui-hide').find('img').prop('src', res.data.url);console.log(res);}}});
});
</script></body>
</html>

这是layui上传图片的前端示例代码;

http://www.lryc.cn/news/406487.html

相关文章:

  • 农村污水处理难题:探索低成本高效解决方案
  • lightningcss介绍及使用
  • HTTP服务的应用
  • uni-app:踩坑路---scroll-view内使用fixed定位,无效的问题
  • MySQL4.索引及视图
  • MongoDB - 聚合阶段 $match、$sort、$limit
  • ModuleNotFoundError: No module named ‘scrapy.utils.reqser‘
  • vue3+ts+vite+electron+electron-packager打包成exe文件
  • 使用脚本搭建MySQL数据库基础环境
  • Parameter index out of range (2 > number of parameters, which is 1【已解决】
  • rk3588s 定制版 USB adb , USB2.0与USB3.0 区别,adb 由typeC 转换到USB3.0(第二部分)
  • Cookie与Session 实现登录操作
  • 通过IEC104转MQTT网关轻松接入阿里云平台
  • lua 游戏架构 之 游戏 AI (五)ai_autofight_find_way
  • vue3+openLayers点击标记事件
  • 深入分析 Android ContentProvider (三)
  • 养宠浮毛异味双困扰?性价比高的宠物空气净化器推荐
  • maven项目容器化运行之3-优雅的利用Jenkins和maven使用docker插件调用远程docker构建服务并在1Panel中运行
  • docker 打包orbbec
  • 无涯·问知财报解读,辅助更加明智的决策
  • 【Apache Doris】数据副本问题排查指南
  • 【HarmonyOS】关于鸿蒙消息推送的心得体会(二)
  • 零基础入门:创建一个简单的Python爬虫管理系统
  • 【Node.js基础04】node.js模块化
  • 数据库——单表查询
  • dsa加训
  • SpringBoot源码(1)ApplicationContext和BeanFactory
  • CANoe编程实例--TCP/IP通信
  • Neuron协议网关的北向应用插件开发
  • 【BUG】已解决:You are using pip version 10.0.1, however version 21.3.1 is available.