文件上传
获取上传的文件
你可以使用 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); // 上传成功得到文件路径