[Laravel 5.2]存储文件即使存在也找不到

时间:2016-06-29 13:22:34

标签: php laravel storage file-not-found

\Storage::disk('verify_files')->put('verify-' . $fileCode[3], $fileCode[0]);

    $attach = \Storage::get(storage_path('app/public/verify') . '/' . 'verify-' . $fileCode[3]);

我正在使用上面的代码来生成和获取文件。

这是我使用的文件系统:

'verify_files' => [
        'driver' => 'local',
        'root' => storage_path('app/public/verify'),
        'visibility' => 'public',
    ],

当我用file_exists()测试它时,它返回true但是laravel返回FileNotFoundException in FilesystemAdapter.php line 61:

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:2)

存储外观的get方法将自动查看默认磁盘的目录。在这种情况下,您使用storage_path传递文件的绝对路径,这是多余的,因为它将按原样查看storage/app目录。

相反,请Storage::disk('verify_files')->get('verify-' . $fileCode[3]);

当您需要文件和目录的绝对路径时,请使用storage_path

答案 1 :(得分:0)

我遇到了与你相同的错误,除非我一直在使用不同的方法:

            $parse = new Parsedown();
            $url = url('about.md'); // This would fail, because it returns absolute
            $url = 'about.md'; // the file is living in the root directory of public. This would succeed, because it's relative

            try { // catch file not found errors
                $about = File::get($url);
            } catch (Illuminate\Filesystem\FileNotFoundException $exception) {
                die ('Bad File');
            }

            echo $parse->text($about);

这来自this page和@SArnab上面提到的关于不需要绝对的路径的组合。

除了我使用不同的方法之外,我之前遇到的唯一问题是我使用的是绝对路径而不是我现在使用的相对路径。

我只是想在这个替代方法中添加Laravel 5.2中的文件内容。

享受!