【问题标题】:Laravel 5.4 cannot access img resource in public symlink subfolderLaravel 5.4 无法访问公共符号链接子文件夹中的 img 资源
【发布时间】:2017-09-06 10:49:57
【问题描述】:

我用这个命令在本地存储磁盘中为每个用户创建了一个子文件夹:

if(! Storage::disk('public')->has("users/".$username."_".Auth::user()->id)){
    Storage::makeDirectory("public/users/".$username."_".Auth::user()->id);

它有效!

所以现在当我保存文件时,所有文件都在用户的文件夹中,即:

storage/app/public/users/userX
storage/app/public/users/userY
etc.

然后我用命令建立一个模拟链接:php aritsan storage:link 它有效。

但是当我尝试提供文件时,我总是无所事事! 如果我使用如下代码:

Storage::url("$urlToFile");

其中$urlToFile 包含类似"public/users/userX/file.png" 的内容

它还给我:

/storage/users/userX/file.png

即使我把assett()之类的功能放在前面,我也无法使用它!

我该如何解决?

提前致谢!

【问题讨论】:

  • 你试过了吗:Storage::disk('local')->url($url);?
  • 您使用的是哪个开发环境?是宅基地吗?
  • @chanafdo no im 使用本地机器中的内置服务器,文件存储正确

标签: laravel laravel-5.3 storage laravel-storage


【解决方案1】:

你必须在config/filesystem.php中设置url

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

【讨论】:

  • 与我之前的配置唯一不同的是现在添加了关于“url”的行,但没有任何结果!
  • .env 中是否设置了 APP_URL?
  • 是的,我尝试了使用和不使用端口号 -is localhost:8000-
【解决方案2】:

你可以通过Storage::disk('public')->get($url);来做

【讨论】:

  • 我正在解决同样的问题:使用此命令可以获得 2 种结果,或者如果我将“公共”放在 url 上,则为空字符串,或者如果我尝试没有网址中的“公共”...仍然无法正常工作!
【解决方案3】:

According to the docs,您应该访问您的图像,例如:asset('storage/users/userX/file.png');,而不是您使用的public/users/userX/file.png。

【讨论】:

  • src="localhost:8000/users/userX/file.png" 由 "asset() 或 Storage::disk('local')->url($url)" 生成无效!
  • @JahStation 你到底要传递什么给asset()?
  • "storage/users/USERX/FILEX.PNG"
  • 奇怪,这对我有用,我得到http://localhost/storage/users/userX/file.png
  • 我在本地主机上也有一个端口号!可能是这个问题吗?
猜你喜欢
  • 2019-04-10
  • 1970-01-01
  • 2021-04-30
  • 2017-12-10
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多