我正在尝试将外部JSON文件加载到我的laravel应用程序中。您可以在下面找到我的代码片段。
$location = __DIR__.'/config.json';
echo $location; // Results in correct file location
echo File::exists($location); // Return 1
echo Storage::get($location); // Throws a FileNotFound Exception
File::exists()
方法如何返回true
和Storage::get()
抛出异常?
我的config/filesystems.php
文件:
<?php
return [
'default' => env('FILESYSTEM_DRIVER', 'local'),
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'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'),
],
],
];
答案 0 :(得分:1)
为什么要使用Storage
类呢?该类专门用于访问存储文件夹或外部文件服务器。您将文件存储在控制器/代码旁边,因此以旧式方式执行操作可能更容易。
$location = __DIR__.'/config.json';
if (File::exists($location)) {
$string = file_get_contents($location);
$json = json_decode($string, true);
// logic
} else {
// Do something
}
答案 1 :(得分:1)
您可以尝试通过
文件外观访问它File::get($location);
错误可能是因为Storage试图从其默认路径(./project/storage/app)以及您发送的文件中访问该文件。我最好的建议是添加一个新磁盘 像这样
// config/filesystems.php
'customDrive' => [
'driver' => 'local',
'root' => base_path(), // here put your full path
],
并通过
访问它Storage::disk("customDrive")->get("config.json");