📜  laravel 中的媒体不能大于 12288 KB - PHP (1)

📅  最后修改于: 2023-12-03 14:43:46.422000             🧑  作者: Mango

Laravel 中的媒体不能大于 12288 KB - PHP

在 Laravel 程序开发中,你可能会遇到上传一些媒体文件的需求。然而,在上传这些文件时,你可能会遇到一个错误,错误信息提示媒体文件不能大于 12288 KB。这是为什么呢?本篇文章将会为你解释这个问题以及如何解决它。

问题背景

Laravel 使用了内置的文件存储服务 Flysystem。Flysystem 不仅支持本地文件系统,还支持许多云存储服务(例如 Amazon S3)。Flysystem 为了控制媒体文件大小,会通过设置 max_size 参数来限制上传的文件大小。这个参数默认值为 12288 KB。

在 Flysystem 配置文件 config/filesystems.php 中,你可以看到以下代码片段:

'disks' => [
    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    // ...

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
        'max_size' => 12288, // 这里
    ],

    // ...

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'max_size' => 12288, // 这里
    ],
],

这里,你可以看到 publics3 两个磁盘都设置了 max_size 为 12288。这就是媒体文件大小限制的原因。

解决方法

默认情况下,你不能上传任何大于 12288 KB 的媒体文件。如果你需要上传更大的文件,你需要修改 max_size 参数。

如果你希望上传更大的文件,你可以做如下修改:

'disks' => [
    // ...

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
        'max_size' => 50000, // 修改为 50000 KB
    ],

    // ...

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'max_size' => 50000, // 修改为 50000 KB
    ],
],

通过修改 max_size 参数,你可以控制媒体文件上传的最大大小。在实际开发中,你应该根据自己的需求来设置这个参数。

结论

在 Laravel 开发中,媒体文件大小不能大于 12288 KB。这个限制是由 Flysystem 控制的。你可以通过修改 max_size 参数来控制上传文件的最大大小。在实际开发中,你应该根据自己的需求来设置这个参数。