Laravel 5 Laravel 5.5-处理大型base64映像的PostTooLargeException?

Laravel 5 Laravel 5.5-处理大型base64映像的PostTooLargeException?,laravel-5,intervention,Laravel 5,Intervention,我有一个10MB的限制来接受每个图像,任何更大的限制都会阻止代码的执行。我不知道怎么做。以下是我尝试过的: 在控制器方法中: // Increase memory limit before processing ini_set('memory_limit','256M'); $base64_image = $request->get('base64_image'); $image = Image::make($base64_image); // Returns 0, looks lik

我有一个10MB的限制来接受每个图像,任何更大的限制都会阻止代码的执行。我不知道怎么做。以下是我尝试过的:

在控制器方法中:

// Increase memory limit before processing
ini_set('memory_limit','256M');

$base64_image = $request->get('base64_image');
$image = Image::make($base64_image);

// Returns 0, looks like we have to encode image to get file size...
$image_size = strlen((string) $image);
Log::critical('image_size file size from string: ' . $image_size);

$image = $image->encode('jpg');

// Returns byte size
$image_size = strlen((string) $image);
Log::critical('image_size file size from string: ' . $image_size);
上述方法适用于小图像,但问题在于大图像。我希望尽早检测图像大小是否超过10MB限制,以避免浪费任何内存/处理时间,并向用户返回一个错误,即图像大小超过允许的文件大小限制

当我以base64发送100MB图像时,Laravel抛出一个错误
PostTooLargeException
,因为PostBase64的大小当然很大。因此,我如何检测实际图像是否超过10MB限制,并在超过10MB限制时向用户返回一个优美的错误?

普遍的共识是base64表示大约是原始图像的135%。如果字符串是gzip'ed,则可以更改此值


使用两个图像并将它们转换为base64,使用或不使用gzip和feom计算偏差百分比

普遍的共识是base64表示约为原始图像的135%。如果字符串是gzip'ed,则可以更改此值

使用两个图像并将它们转换为base64,使用或不使用gzip和feom计算偏差百分比

这一行:

$image = Image::make($base64_image);
创建一个图像资源,当您将其转换为字符串时,它将为您提供一个空资源

您需要获得实际字符串的长度,如下所示:

$image_size = strlen($base64_image);
并检查其是否大于10MB。

此行:

$image = Image::make($base64_image);
创建一个图像资源,当您将其转换为字符串时,它将为您提供一个空资源

您需要获得实际字符串的长度,如下所示:

$image_size = strlen($base64_image);

然后检查它是否大于10MB。

是的,我遇到了这个问题,但我正试图在Laravel中处理这个问题,特别是由于这个异常。主要是检测此图像在Laravel中的PostTooLargeException,并以一个优雅的错误进行响应。对,我遇到了这个问题,但我正试图在Laravel中处理这个问题,特别是由于异常。主要是检测此图像的Laravel中的PostTooLargeException,并以优美的错误进行响应。