【问题标题】:Laravel set max upload size limit for specific routes?Laravel 为特定路线设置最大上传大小限制?
【发布时间】:2019-08-26 03:52:56
【问题描述】:

我只想为特定路线更改upload_max_filesize。但正如PHP > 5.3 ini_set() 将无法从脚本中设置限制。有什么解决办法吗?

更新

在指定的路线中,我必须根据用户的订阅计划检查上传文件的大小。在其他路线中,我无权访问用户信息和/或我不想检查其他路线的文件大小,例如登录路径。并且由于服务器默认上传大小非常大,可能有人故意上传非常大的文件,造成服务器资源的浪费。

【问题讨论】:

  • 我对此发表评论,因为这只是一个建议。如果您将file size validation 与路由上的中间件结合起来会怎样。所以你在你的代码而不是服务器配置中检查它。

标签: php laravel file-upload


【解决方案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 限制设置为较小的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      相关资源
      最近更新 更多