菜单
本页目录

文件上传

获取上传的文件

你可以使用 file 方法或使用动态属性从 Illuminate\Http\Request 实例中访问上传的文件。 该 file 方法返回 Illuminate\Http\UploadedFile 类的实例,该类继承了 PHP 的 SplFileInfo 类的同时也提供了各种与文件交互的方法:

$file = $request->file('photo');

验证成功上传

除了检查上传的文件是否存在外,你也可以通过 isValid 方法验证上传的文件是否有效

if ($request->file('photo')->isValid()) {
    //
}

文件上传配置项

在配置项中设置每个磁盘的位置和驱动模式等

return [
    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],
        "ding" => [
            'driver' => 'local',
            'root' => public_path("uploads"),
        ],
        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
            'endpoint' => env('AWS_ENDPOINT'),
            'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
        ],

    ],
];

存储上传文件

要存储上传的文件,先配置好 文件系统。你可以使用 UploadedFile 的 store 方法把上传文件移动到你的某个磁盘上,该文件可能是本地文件系统中的一个位置,甚至像 S3 这样的云存储位置。 store 方法接受相对于文件系统配置的存储文件根目录的路径。这个路径不能包含文件名,因为系统会自动生成唯一的 ID 作为文件名。 store 方法还接受可选的第二个参数,用于存储文件的磁盘名称。这个方法会返回相对于磁盘根目录的文件路径:

$path = $request->file('photo')->store('images');
// store第一个参数文件路径
// store第二个参数磁盘名称
$path = $request->file('photo')->store('images', 'ding');

dump($path); // 上传成功得到文件路径