0

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

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

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

4

1 回答 1

1

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

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

store 方法实际上返回存储的文件名和路径。在这里,我指定我的磁盘是public并且里面的文件夹publicblog_images. 我将结果存储在$storedImageName.

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

$onlyImageName = basename($storedImageName);

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

这样,我可以在刀片文件中渲染图像,如下所示:

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

asset()helper 将为您提供公共目录的路径,然后您只需指定图像的其余路径。

于 2020-10-27T15:22:39.457 回答