百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

在 Laravel 中按大小验证 Base64 图像:操作指南

liuian 2025-03-14 18:46 80 浏览

作为Laravel开发人员,我们经常需要验证上传的图像,以确保它们满足一定的尺寸要求。开箱即用,Laravel的验证规则只适用于数值,不适用于base64编码的图像。max

在这篇文章中,我们将逐步扩展 Laravel 的验证以处理自定义 base64 图像大小验证。通过编写自定义验证规则,我们可以在应用中需要上传图像的任何位置重复使用此逻辑。

自定义验证规则

所有自定义验证规则都是通过扩展 in 方法注册的。首先,我们将使用 Laravel 的方法定义逻辑:
ValidatorbootAppServiceProviderValidator::extend

Validator::extend('base64_image_size', function ($attribute, $value, $parameters, $validator) {

  // Decode the image
  $decodedImage = base64_decode($value);

  // Get image size in kilobytes 
  $imageSize = strlen($decodedImage) / 1024;

  // Check if image is below max size
  return $imageSize <= $parameters[0]; 

});

在这里,我们正在解码 base64 编码的图像,以获得其二进制大小(以字节为单位)。然后我们转换为千字节以与参数中定义的最大大小进行比较。如果图像低于最大大小,则验证通过。

自定义错误消息

接下来,我们将使用以下方法自定义错误消息:Validator::replacer

Validator::replacer('base64_image_size', function ($message, $attribute, $rule, $parameters) {
  return str_replace([':attribute', ':max'], [$attribute, $parameters[0]], $message);
});

这将替换为字段名称和定义的最大大小。消息本身在语言文件中定义:
:attribute:maxresources/lang/xx/validation.php

'base64_image_size' => 'The :attribute must not be larger than :max KB.',

用法

最后,我们可以在验证期间使用此自定义规则:

$validator = Validator::make($request->all(), [
  'image' => 'required|base64_image_size:500',
]);

if ($validator->fails()) {
  // Image too large
} 

通过扩展 Laravel 的验证功能,我们构建了一种可重用的方式来验证整个应用程序中的 base64 图像大小。相同的方法可用于任何不适合内置规则的验证逻辑。

相关推荐

sd卡和tf卡(SD卡和tf卡的区别)

1、定义不同SD卡是SecureDigitalCard卡的简称,直译成汉语就是“安全数字卡”,是由日本松下公司、东芝公司和美国SANDISK公司共同开发研制的全新的存储卡产品。SD存储卡是一个完全...

迅雷网盘官方下载(迅雷网盘安卓版下载)
迅雷网盘官方下载(迅雷网盘安卓版下载)

迅雷下载网盘文件的方法如下:1.在电脑桌面中打开百度网盘,选择需要下载的文件,鼠标右击它,然后点击“分享”。2.在分享窗口中选择“分享形式”、“访问人数”和“有效期”,点击创建链接,然后复制链接。3.打开迅雷软件,在软件的主界面上会有...

2026-01-24 17:37 liuian

苹果无限金币无限钻石版游戏大全

在iOS设备上下载“飞机大厨无限钻石版”游戏的方法有很多种,以下是其中两种常见的方法:方法一:通过AppStore下载1.打开AppStore应用商店,在搜索框中输入“飞机大厨无限钻石版”进行搜...

正版win7在哪儿下载(正版windows7在哪下载)

下面提供的是微软发布的Windows7各版本光盘ISO镜像下载地址,原始文件均来源自MSDN,和零-售彩盒版本光盘内容完全一致。请放心下载。(如果需要光盘的买家,请无视以下内容)下...

c盘分100g和200g区别(c盘分200g合适吗)

C盘大小是装系统时候自己分割的。不是一个固定值。所以有些100G,有些200G。现在硬盘都比较大,软件也比较多,很多软件默认路径都是装在C盘目录下面。所以只要是硬盘够大,C盘分割大点好。不然C盘空间不...

win10一直进入bios系统(win10开机老是进入bios)

在boot标签下,检查第一启动设备是否为硬盘,如果不是更改一下,然后保存后重启。另外,win10是品牌电脑出厂预装的?还是自己安装的?win10系统电脑开机进入bios的原因及解决办法如下一:你的...

tplogincn登录入口初始密码(tplogincn登录用户名密码)

1、打开电脑浏览器,在浏览器地址栏里输入“tplogin.cn”按下回车键,进入路由器登录密码设置窗口。2、在“设置密码”框后面为路由器设置登录密码,在“确认密码”中再次输入密码,点击“确认”。即可进...

免费软件下载安装(看漫画免费软件下载安装)

1、在ipad桌面上找到“AppStore”应用图标,点击进入。2、在AppStore应用界面找到右下角的“搜索”选项,点击进入。3、在搜索框中搜索需要下载安装的软件。4、搜索完成后,点击软件右侧...

大白菜装机u盘(大白菜装机u盘电脑老是死机)

。下面是一个简单的的大白菜U盘装机教程:1.下载并打开大白菜U盘启动盘制作工具,并选择“创建USB闪存驱动器”。2.插入需要制作启动盘的U盘,并等待制作工具自动识别U盘成功。3.制作完成后,关闭大白菜...

macbookpro2020(macbookpro2020款13寸)

MacBookPro2020的屏幕刷新率有47.95Hz、48.00Hz、50.00Hz、59.94Hz和60.00Hz。2020款16英寸MacBookPro拥有第九代IntelCore...

qq在线使用 无需下载(qq在qq在线登录无需下载)

QQ软件并不是一定要登录QQ后才能下载的,你只要在地址栏中输入qq.com后回车就可登录QQ网站,再点“软件”就可转到QQ的软件中心并下载QQ的最新版本的程序来安装。你既然想登录QQ,应该已经安装有宽...

xp光盘安装系统步骤(xp光盘系统安装教程怎么安装)
  • xp光盘安装系统步骤(xp光盘系统安装教程怎么安装)
  • xp光盘安装系统步骤(xp光盘系统安装教程怎么安装)
  • xp光盘安装系统步骤(xp光盘系统安装教程怎么安装)
  • xp光盘安装系统步骤(xp光盘系统安装教程怎么安装)
ios怎么关闭自动更新(ios哪里关闭自动更新)
ios怎么关闭自动更新(ios哪里关闭自动更新)

1、开始,(本次演示以AppStore为例)先在手机的桌面上找到应用程序“设置”,点击进入新界面。2、然后,进入到设置操作界面后,找到“通知中心”选项,点击打开。3、进入到通知中心操作界面后,找到“AppStore”选项,点击打开。4、...

2026-01-24 14:55 liuian

win10注册表恢复(win10注册表怎么还原)

如果您的Windows10注册表遇到了问题,您可以尝试以下几种方法来恢复它:1.创建注册表备份:在恢复之前,最好先创建注册表的备份以防止意外情况。打开注册表编辑器,选择“文件”菜单,然后选择“导出...

windows 8产品激活码(windows8激活码免费)

win8.1专业版激活密钥:中文版安装密钥:TNH8J-KG84C-TRMG4-FFD7J-VH4WX全国统一注册码:NTTX3-RV7VB-T7X7F-WQYYY-9Y92F核心版安装密钥:3...