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 为特定路线设置最大上传大小限制?的主要内容,如果未能解决你的问题,请参考以下文章

nginx如何设置最大上传文件大小

Laravel:如何将某些路由参数限制为特定值?

如何设置php上传文件大小限制

jeecg 怎么 解除上传文件大小限制

限制快递到特定路线

解决wordpress上传文件2M限制