为上传的文件获取正确的 URL

Get correct URL for uploaded files

我的平台有一个功能可以让用户上传他们自己的图标图片。他们上传后,我使用 $request->icon->store('public/icons') 保存它们,并简单地保存返回的路径,例如“public/icons/xa6y2am3e4cOdqQuLpvEhFSXDKwFMDOgggS2i67l.png”。

我不太清楚显示图标的正确方法是什么。上面例子中显示图标的URL是“/storage/icons/xa6y2am3e4cOdqQuLpvEhFSXDKwFMDOgggS2i67l.png”,因此我需要将路径中的“public”替换为“storage”,这让我觉得我我在某处做错了什么(我看不出为什么 store() 方法应该为我提供一个不正确的路径)。

我已经按照文档中的描述完成了我的符号链接。使用本地存储。我错过了什么?

这是我在我的一个包含博客的应用程序中处理我的存储的方式:

$storedImageName = $request->file('main_image')->store('blog_images', 'public');

存储方法实际上returns 存储的文件名和路径。在这里,我指定我的磁盘是publicpublic里面的文件夹是blog_images。我将结果存储在 $storedImageName.

现在,为了将它保存在数据库中,我实际上并没有保存整个路径,我只保存了图像名称。这是因为,您以后可能想更新您的目录名称,或者将其移动到另一个位置等。您可以这样获取:

$onlyImageName = basename($storedImageName);

basename()是PHP的函数,与Laravel无关。

这样,我可以像这样在 blade 文件中渲染图像:

<img ... src="{{ asset('/storage/blog_images/' . $blog->main_image) }}" />

asset() 助手将为您提供 public 目录的路径,然后您只需指定图像路径的其余部分即可。