Laravel - 在超过 PHP 最大上传大小限制时验证文件大小
2022-08-31 00:15:59
post_max_size和upload_max_filesize是可以设置的指令,以配置php.ini文件或.htaccess文件或httpd.conf文件。
php.ini 示例:
post_max_size=15M
upload_max_filesize=15M
.htaccess 示例:
php_value post_max_size=15M
php_value upload_max_filesize=15M
httpd.conf 示例:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/html/example/
ErrorLog /var/log/httpd/error.log
<Directory /var/www/html/example/>
AllowOverride None
<IfModule mod_php5.c>
php_value post_max_size=15M
php_value upload_max_filesize=15M
</IfModule>
</Directory>
</VirtualHost>
您似乎对更改PHP限制以允许更大的文件不感兴趣。在我看来,您希望最大上传量为5MB,如果超过此值,则返回正确的响应。
您可以在 异常处理程序 中处理异常,位于 。更新方法以添加所需的代码。例如,如果要返回验证异常,则需要在异常的异常处理程序内处理验证。FileException
app/Exceptions/Handler.php
render
FileException
public function render($request, Exception $exception)
{
if ($exception instanceof \Symfony\Component\HttpFoundation\File\Exception\FileException) {
// create a validator and validate to throw a new ValidationException
return Validator::make($request->all(), [
'your_file_input' => 'required|file|size:5000',
])->validate();
}
return parent::render($request, $exception);
}
这是未经测试的,但应该给你一个大的想法。
您还可以通过javascript进行客户端验证,以便太大的文件永远不会实际发送到您的服务器,但是javascript可以被客户端禁用或删除,因此最好设置良好的服务器端处理。
对于客户端验证,如果将事件处理程序附加到文件输入的“change”事件,则可以使用 检查文件大小,并在之后执行任何其他操作(禁用表单,删除上传的文件等)。this.files[0].size