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

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

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

作为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、打开西瓜视频,在我的界面点击观看历史。2、查看电影历史播放记录即可。1、连接网络点击进入自己看该电影的播放器;2、在首页右下角处,点击进入我的页面;3、在我的页面中有显示“历史播...

2026-01-23 22:05 liuian

win98系统ghost版win98(win98 iso)

首先做GHOST需要把GHOST拷贝在你的硬盘上,或D或E盘,然后看好你要放在的盘符是不是有足够的空间存放备份文件,一般安装软件后需要1.5G左右,重新启动电脑,按F8键进入选项,选择DOS系统,进入...

tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
  • tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
  • tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
  • tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
  • tp link路由器重置密码(tplink路由器重置密码设置步骤图解)
微软工具官网(微软工具软件)

在桌面上找到打不开的快捷方式,右键菜单中选择属性,先看下这个快捷方式具体的存放路径是在哪里2.到对应的路径下去找,看看应用软件是否真的存放在了那个位置,如果没有找到,说明软件的安装位置已经被移动;如果...

visio密钥在哪里输入(visio professional密钥)

GR24B-GC2XY-KRXRG-2TRJJ-4X7DCGR24B-GC2XY-KRXRG-2TRJJ-4X7DCVWQ6G-37WBG-J7DJP-CY66Y-V278X2T8H8-JPW3...

笔记本控制面板在哪里(笔记本控制面板在哪个位置)

最近有Win10用户反映,因为刚升级Win10,所以对Win10的一切操作都还很不熟悉,其中就有一个让用户非常困恼的问题,那就是找不到控制面板。明明开始菜单已经找到了,但就是怎么找都找不到控制面板。下...

路由器用户名忘了怎么办(路由器用户名和密码忘记了)

路由器忘记用户名的解决方法:  在路由器的后面面板上找到一个标识为RESET的圆孔,这就是路由器恢复出厂设置的复位键。在路由器通电的状态下,用牙签或其他类似的东西,点击RESET键5秒不放,然后路...

powerpoint下载手机版(ppt手机版官方下载)

1、首先我们打开文件管理,点击“Tencent”文件夹选项。2、然后我们在该页面中点击“micromsg”文件夹选项。3、之后我们在该页面中点击“?download”文件夹选项进入即可看到微信下载的p...

重装系统后数据恢复(重装系统后数据恢复步骤)

如果在系统重装之前备份了数据,那么可以按照以下步骤进行恢复:1.插入备份数据的存储设备,如U盘或移动硬盘。2.打开备份数据所在的存储设备,在其中找到需要恢复的数据。3.将需要恢复的数据复制到电脑的硬盘...

sd卡怎么在手机上使用(sd卡装手机上怎么用)

若将手机中的文件与外置SD卡互相转移,请操作:1.若将话机中的多媒体文件移动到SD卡中:我的文件-设备存储-查找需要移动的文件夹-更多-编辑-选择需要移动的文件-移动至,返回到external_sd-...

bios设置网卡启动(bios设置网卡启动图解)

在华硕主板的BIOS设置中,可以通过进入“启动”选项卡来设置网卡启动。首先确保网卡已经正确安装并连接到网络。进入“启动”选项卡后,找到“启动顺序”选项,将其设置为“网络启动”,然后保存设置并退出BIO...

lsp修复是啥意思(lsp修复了还是不能上网)

意思就是这个lsp服务出现故障了,系统需要进行修复。LSP即分层服务提供商,Winsock作为应用程序的Windows的网络套接字工具,可以由称为“分层服务提供商”的机制进行扩展。LSP全称为“...

如何重设wifi密码(怎样重设wifi)

首先使用浏览器输入192.168.1.1。2进入wifi登录界面。3输入wifi账户密码信息。(如无改动,初始账户跟密码是:admin)4然后就进入了wifi界面。5然后点击安全设置。6这是看到的是原...

有线路由器桥接教程详细(路由器有线桥接方法详细教程)
  • 有线路由器桥接教程详细(路由器有线桥接方法详细教程)
  • 有线路由器桥接教程详细(路由器有线桥接方法详细教程)
  • 有线路由器桥接教程详细(路由器有线桥接方法详细教程)
  • 有线路由器桥接教程详细(路由器有线桥接方法详细教程)
电脑打开就关机是怎么回事(电脑开了就关什么原因)

这种开机后自动断电的情况很有可能是电源或主板出了故障。故障原因是多样的,如IC芯片、电容烧坏,某个电路出现问题等,一般来说,这样的故障个人是没办法维修的,建议送修或更换相关配件,建议首先尝试更换电源。...