当前位置: 首页 > 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上传图片的前端示例代码;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LeetCode-day24-2766. 重新放置石块
  • AV1技术学习:Constrained Directional Enhancement Filter
  • 免费【2024】springboot 趵突泉景区的智慧导游小程序
  • 解决 Android 应用安装错误:INSTALL_FAILED_BAD_PERMISSION_GROUP
  • 网络安全常用易混术语定义与解读(Top 20)
  • Unity 批处理详讲(含URP)
  • 什么品牌的开放式耳机好用?南卡、韶音、cleer 三款主流王炸爆款横评
  • 46 uniApp
  • IPython的剪贴板魔法:%%cpaste命令全攻略
  • 【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(下)
  • 10 ES6的模板字符串
  • C++笔记5
  • git 操作汇总【迭代更新中】
  • Python爬虫(1) --基础知识
  • Leetcode 2824. 统计和小于目标的下标对数目
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【技术性】Search知识
  • AHK 中 = 和 == 等比较运算符的用法
  • android图片蒙层
  • axios 和 cookie 的那些事
  • Django 博客开发教程 8 - 博客文章详情页
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • exports和module.exports
  • JavaScript设计模式与开发实践系列之策略模式
  • js ES6 求数组的交集,并集,还有差集
  • Python十分钟制作属于你自己的个性logo
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 今年的LC3大会没了?
  • 类orAPI - 收藏集 - 掘金
  • 理清楚Vue的结构
  • 浅谈web中前端模板引擎的使用
  • 如何胜任知名企业的商业数据分析师?
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 使用API自动生成工具优化前端工作流
  • 小程序测试方案初探
  • 应用生命周期终极 DevOps 工具包
  • 智能合约Solidity教程-事件和日志(一)
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • $.ajax,axios,fetch三种ajax请求的区别
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (二)Linux——Linux常用指令
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (三)Honghu Cloud云架构一定时调度平台
  • (四)汇编语言——简单程序
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)Sublime Text3配置Lua运行环境
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 调用php,php 调用.net com组件 --
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET8 动态添加定时任务(CRON Expression, Whatever)