0

在 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

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

4

2 回答 2

1

由于您的文件位于此位置,因此/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')

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

于 2019-07-24T12:05:43.090 回答
-1

你应该试试这个:

请运行以下命令在公共文件夹中创建存储文件夹:

php artisan storage:link


$filePath = public_path("storage/ap/payments/".$payment->payment_image);
于 2019-07-24T11:52:22.203 回答