'images', 'audio' => 'audio', 'video' => 'video', 'image' => 'images', }; // 设置保存路径,包含日期子目录 $directory = public_path('uploads/' . $typePath . '/' . date('Ymd')); $filename = basename($url); // 提取文件名 //如果文件没有后缀,按类型不补充默认后缀 if (!str_contains($filename, '.')) { $filename .= match ($type) { 'avatar' => '.jpg', 'audio' => '.mp3', 'video' => '.mp4', 'image' => '.jpg', }; } $savePath = $directory . $filename; $filePath = 'uploads/' . $typePath . '/' . date('Ymd') . '/' . $filename; // 存储引擎 $config = [ 'default' => ConfigService::get('storage', 'default', 'local'), 'engine' => ConfigService::get('storage') ]; if ($config['default'] == 'local') { // 检查目录是否存在,不存在则创建 if (!is_dir($directory)) { mkdir($directory, 0777, true); } download_file($url, $directory, $filename); } else { // 第三方存储 $StorageDriver = new StorageDriver($config); if (!$StorageDriver->fetch($url, $filePath)) { return $url; } } return $filePath; } }