FileNotFoundException 即使它存在于 Laravel

FileNotFoundException even if it exists in Laravel

在 laravel 中,我制作了一个上传文件的应用程序,用户可以检索该文件。

但是我每次点击上传都会出现这个错误。

FileNotFoundException in FilesystemAdapter.php line 91:
/storage/ap/payments/98AcresResort_25.pdf

我的控制器代码是这样的:

$filePath = "/storage/ap/payments/".$payment->payment_image;
$file = storage::disk('public')->get($filePath);

我的文件位于 /public/storage/ap/payments/filename.pdf

我试过了php artisan storage:link

有人可以提出任何解决方案吗?

你应该试试这个:

请运行 下面的命令在 public foler 中创建存储文件夹:

php artisan storage:link


$filePath = public_path("storage/ap/payments/".$payment->payment_image);

由于您的文件位于此位置/your-app/public/storage/ap/payments/filename.pdf您需要添加一个磁盘。

在文件中config/filesystems.php

添加磁盘

'disks' => [

    'web' => [
        'driver' => 'local',
        'root' => public_path(),
    ],

那你就可以这样使用了

$filePath = "storage/ap/payments/".$payment->payment_image;
$file = Storage::disk('web')->get($filePath);

它将寻找位置

/your-app/public/storage/ap/payments/filename.pdf"

但我怀疑您的文件 /public/storage/ap/payments/filename.pdf 也在 /storage 文件夹中并且您正在通过符号链接工作。正确的方法是使用 app 而不是 ap 并像这样使用 public 磁盘 Storage::disk('public')->path('payments/filename.pdf')

更好的是,由于它是一种付款方式,您可能不希望文件 public 并且所有人都可以访问。在这种情况下,您可以使用磁盘 local 并按要求提供文件。但这可能是更高级的东西。