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

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

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

作为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 图像大小。相同的方法可用于任何不适合内置规则的验证逻辑。

相关推荐

电脑定时自动关机命令(电脑定时自动关机命令)
电脑定时自动关机命令(电脑定时自动关机命令)

1.电脑一般不可以设置定时开机,设置定时关机方法如下:按win+R打开运行菜单。2.在输入框中输入“Shutdown?-s-t60”格式的语句就能创建定时关机任务,其中60代表60秒,如果想要定时一小时那就是60*60=3600,语句也...

2026-01-26 22:21 liuian

hp1007打印机无法打印(hp1007打印机打印不进纸什么原因)

首先,你要说下,你的打印机是怎么连接使用的,是共享还是单机使用。你可以试试连续掀起放下五次,打印机的上盖,看看能不能打印一张全横条的测试页,如果可以的话,说明机器是好的,那么问题出在电脑那里,如果是单...

w10密钥激活(w10密钥激活码永久版)
w10密钥激活(w10密钥激活码永久版)

1.首先进入到win10专业版系统桌面中,点击开始按钮,然后选择设置选项打开,进入下一步。  2.在打开的Windows设置界面底部点击更新和安全项打开,然后进入下一步。  3.在打开的更新和安全设置界面的左侧可以看到一个激活选项,单击以进...

2026-01-26 21:55 liuian

电脑死机了咋整(电脑死机咋搞)

1、很多电脑假死是由于运行的程序没有得到响应引起的,你像你在同一个时间打开过多的程序,导致资源消耗严重就会出现停止响应的情况,这个时候你要先按“Ctrl+Alt+Del”组合键打开任务管理器。2、然后...

windows蓝屏代码大全(windows蓝屏代码大全及解决方案)
windows蓝屏代码大全(windows蓝屏代码大全及解决方案)

电脑蓝屏代码大全:1、0X0000000操作完成  0X0000001不正确的函数  0X0000002系统找不到指定的文件  0X0000003系统找不到指定的路径  0X0000004系统无法打开文件  0X0000005...

2026-01-26 21:21 liuian

联想台式电脑怎么调节屏幕亮度

可以通过以下三种方法调节屏幕亮度:一、在使用的操作系统中调节亮度的方法(以Win10为例):【方法1】:点击开始菜单栏,然后依次选择设置——系统——显示选项,右侧可以看到亮度级别,用鼠标左右拖动亮...

自己的邮箱号是多少怎么查询

1、以QQ邮箱为例,电子邮箱号即为:“QQ号”@qq.com或者设置的英文邮箱账号和Foxmail邮箱账号。查看需要首先打开QQ面板。2、在面板中点击“我的邮箱”选项。3、进入QQ邮箱后,可以在页面上...

深度系统u盘安装教程(深度u盘安装win7系统步骤)
  • 深度系统u盘安装教程(深度u盘安装win7系统步骤)
  • 深度系统u盘安装教程(深度u盘安装win7系统步骤)
  • 深度系统u盘安装教程(深度u盘安装win7系统步骤)
  • 深度系统u盘安装教程(深度u盘安装win7系统步骤)
win7家庭版如何升级win10(win7家庭普通版怎么升级)

一、win7直接升级win10方法如下1、打开控制面板,点击windowsupdate;2、点击检查更新;3、等待检查完成后点击现在安装;4、安装完成后会提示重新启动;5、关闭系统前会像打补丁一样配...

pc版鸿蒙系统(pc鸿蒙系统出了吗)

给我的感觉就是华为在系统方面越来越好,在操作易用性、流畅度、动画方面都表现得不错。但是,让我把EMUI11.0跟鸿蒙2.0两者作比较,我只能说在操作体验方面鸿蒙2.0很平淡,变化不多。在鸿蒙2.0上的...

windows95模拟器手机版(win95模拟器电脑版)

火蜂精灵模拟器卡在95%不运行可能有多种原因,以下是一些可能的解决方案:1.确保你的电脑或手机系统符合模拟器要求,包括系统版本、内存和存储空间等方面。2.尝试重新启动模拟器或设备,有时候重启可以解...

360电脑重新装系统怎么弄(360电脑重装系统教程win10)
  • 360电脑重新装系统怎么弄(360电脑重装系统教程win10)
  • 360电脑重新装系统怎么弄(360电脑重装系统教程win10)
  • 360电脑重新装系统怎么弄(360电脑重装系统教程win10)
  • 360电脑重新装系统怎么弄(360电脑重装系统教程win10)
手机下载什么杀毒软件最好(手机下载什么杀毒比较好)
手机下载什么杀毒软件最好(手机下载什么杀毒比较好)

1、360手机卫士《360手机卫士》是一款功能强大,永久免费的手机安全软件,主要功能包括:手机杀毒,手机体检,手机加速,骚扰短信/电话拦截,保护个人隐私,通话归属地显示及查询,手机体检,常用号码查询,长途自动IP拨号,响一声吸费电话提醒,垃...

2026-01-26 19:21 liuian

qq五笔(qq五笔输入法怎么打字)

输入time,date,week试试,或者输入sj,rq,如果不是去设置里找使用帮助。遇到这种问题可以尝试以下几种办法:1、重装输入法并从重启一下电脑。有些输入法安装过程中会发生错误,导致安装完成...

开机密码忘记了怎么开机(如果开机密码忘记了怎么办)

开机密码忘了解决方法如下一、确认是否密码被更改:可能手机被其他人更改了锁屏密码,建议您确认是否被身边的人更改了密码。二、确认是否使用了隐私空间:如果您启用了隐私空间,并且为其设置了与主用户不同的锁屏密...