使用存储外观说明Laravel 5.6中的\合同\文件系统\文件未找到异常

zqdjd7g9  于 2022-12-01  发布在  其他
关注(0)|答案(3)|浏览(114)

此代码返回一个奇怪的错误:

$file = Storage::get(Storage::disk('notas_xml')->path('') . 't.txt');

如您所见,该文件确实存在。

kognpnkq

kognpnkq1#

直接从磁盘获取文件

$exists = Storage::disk('notas_xml')->exists('t.txt');
if ($exists) {
  $file = Storage::disk('notas_xml')->get('t.txt');
}

如果您没有在filesystems.php中设置notas_xml磁盘

$file = Storage::get('public/arquivos/notas_xml/t.txt');

要使用您的代码,您需要在config/filesystems.php中设置这样的磁盘

'notas_xml' => [
    'driver' => 'local',
    'root' => storage_path('app/public/arquivos/notas_xml'),
    'url' => env('APP_URL') . '/storage',
    'visibility' => 'public',
],

然后像这样简单地获取文件

$file = Storage::disk('notas_xml')->get('t.txt');
xjreopfe

xjreopfe2#

您需要按以下代码获取文件:

Storage::disk('notas_xml')->has('t.txt');

上面的has方法可以用来判断磁盘上是否存在给定的文件:
请阅读文档https://laravel.com/docs/5.1/filesystem#retrieving-files

6ojccjat

6ojccjat3#

要更好地理解这一切......诀窍就在:config/filesystems.php
如果你有这段代码(这是Github中Laravel的默认值)

'disks' => [
        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

此外观Storage将在文件夹中起作用
root_laravel_项目/存储/应用
因此,如果您要检查“israel.txt”文件是否存在
if( Storage::exists('israel.txt') ){ echo "File found. And it exists on the path: root_laravel_project/storage/app/israel.txt"; }
请记住,到目前为止,它与符号链接php artisan storage: link无关
此符号链接仅用于使“storage”文件夹中名为“public”的文件夹成为通过HTTP进行公共访问的一部分

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

然后在执行sym时,您可以通过http访问文件(对任何用户都是公共的)
This example assumes that you are using a virtual host (and if not, you must do it as a recommendation for work better locally)
您可以使用以下命令来执行此操作:
或者这样说,它更好地理解为在没有虚拟主机的旧学校
本地主机
然后这些url将在您的文件夹中查找
root_laravel_project/storage/app/public/israel-alvarez.txt
Laravel的文档有些简短,在这个问题上可能会令人困惑。(这是上传和验证是否有文件的正确方法),另一件事是通过http(通过url)这是符号链接(这是您已经给用户的处理,例如下载文件或查看它是否是PDF)。
希望能帮上忙祝你愉快

相关问题