Laravel 为特定路线设置最大上传大小限制?
Posted
技术标签:
【中文标题】Laravel 为特定路线设置最大上传大小限制?【英文标题】:Laravel set max upload size limit for specific routes? 【发布时间】:2019-08-26 03:52:56 【问题描述】:我只想为特定路线更改upload_max_filesize
。但正如php
> 5.3 ini_set() 将无法从脚本中设置限制。有什么解决办法吗?
更新
在指定的路线中,我必须根据用户的订阅计划检查上传文件的大小。在其他路线中,我无权访问用户信息和/或我不想检查其他路线的文件大小,例如登录路径。并且由于服务器默认上传大小非常大,可能有人故意上传非常大的文件,造成服务器资源的浪费。
【问题讨论】:
我对此发表评论,因为这只是一个建议。如果您将file size validation 与路由上的中间件结合起来会怎样。所以你在你的代码而不是服务器配置中检查它。 【参考方案1】:一种简单的方法是使用验证器:
设置最大尺寸使用
$validator = Validator::make($request->all(), [
'file' => 'max:500000',
]);
该值以千字节为单位。 IE。最大:10240 = 最大 10 MB
另见:
Laravel Request Validation
如果您想多次使用此规则,您可以提出请求并在此处添加此规则
1.运行
php artisan make:request ExampleRequest
2.在app/Http/Requests中选择ExampleRequest
public function authorize()
return true;
public function rules()
return [
'file'=>'max:500000',
];
3. 在需要的地方使用 ExampleRequest 而不是 Request
【讨论】:
【参考方案2】:经过一番研究,我发现既不可能也不应该那样做!
当一个带有大文件的请求到达框架的控制器/中间件部分时,它已经浪费了我服务器的 RAM、CPU 和存储空间。所以从那一点阻止请求没有任何用处。
Web 服务器及其各自的网站配置应分开处理大文件的路由和其他路由。 所以我想出了 2 个网站,
一个允许大文件并且只服务于那些特定的路由 负责处理大文件。 另一个用于 api 路由,并将upload_max_filesize
限制设置为较小的值。
【讨论】:
以上是关于Laravel 为特定路线设置最大上传大小限制?的主要内容,如果未能解决你的问题,请参考以下文章