【问题标题】:Can't access files in linked storage folder in laravel by url无法通过url访问laravel中链接存储文件夹中的文件
【发布时间】:2021-06-29 16:12:18
【问题描述】:

我有一个应用程序可以将 pdf 保存到 Laravel 存储文件夹中,然后必须将其公开。

我按照 laravel 的说明将 laravel 根目录中的 /storage 文件夹链接到公共文件夹:php artisan storage:link

我遇到了一个令人困惑的问题,我不知道如何通过 URL 访问该存储文件夹中的文件。

当涉及到这些文件的路径时,它们现在位于此处的存储中:

/storage/app/public/

同一个文件夹的链接路径是

/public/storage/

如果我将测试文件放在/public/ 中,我可以通过转到localhost:3000/file.pdf 来访问它

但是,如果我尝试将文件放入 /public/storage/,当我转到 localhost:3000/storage/file.pdf 时会得到 404,我不知道为什么!

文件已正确链接,因为我可以在 /public/storage/storage/app/public 文件夹中找到它们,这些文件夹的内容匹配。

当我运行dd( public_path() ); 时,我得到:"/home/vagrant/code/project/public"

当我运行dd( storage_path() ); 时,我得到:"/home/vagrant/code/project/storage"

我的filesystems.php 文件中有以下内容:

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

这似乎意味着要保存到存储中的文件应该保存到/storage/app/public,这是真的,并且网址应该是localhost:3000/storage,这似乎不起作用!我错过了什么?

【问题讨论】:

  • 从 /public/ 中删除快捷方式存储文件夹并运行 php artisan storage:link 再次尝试
  • @JohnLobo 没有帮助,仍然得到 404。还三次检查文件名是否正确,复制粘贴它
  • 你确定storage/app/public/file.pdf的路径下有文件
  • 是的,我在 /storage/app/public 也有一些文件夹,但我将测试文件直接放在 /storage/app/public 文件夹中进行测试

标签: php laravel storage


【解决方案1】:

你确定你的 laravel 项目是在 localhost:3000 而不是在 localhost:80 上运行吗?

我想知道,因为通常 localhost:3000 被某种 node.js (vue/nuxt.js) 应用程序使用。如果是这样,您的 laravel 后端部分应该可以通过 api 或 localhost/storage/file.pdf 访问(如果文件直接位于 app/public 文件夹下)。

如果有帮助,请告诉我。

【讨论】:

  • 谢谢,确实在 :3000,所有页面和内容都可以正常工作,只是获取了无法正常工作的存储项目的 URL
  • 好的。您是否尝试过 localhost:3000/storage/storage/file.pdf 而将文件放在 /storage/app/public/storage/file.php 中?你能发布你的 apache .conf 文件吗?
猜你喜欢
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 2016-04-28
  • 2018-09-10
  • 1970-01-01
  • 2015-07-08
  • 2018-03-28
  • 1970-01-01
相关资源
最近更新 更多