在 Laravel 8 火线中显示图像

showing images in Laravel 8 live wire

我已经安装了 laravel 8 并全新安装了 LiveWire 身份验证脚手架,但是当我添加图像时它不显示,如果我尝试在 aq 新选项卡中加载图像它会重定向到索引页面

我添加了如下图片

<img src="{{asset( Auth::user()->profile_photo_url) }}" />

我可能做错了什么或者我可能遗漏了什么?

快速回答

您不必使用 asset() 来显示图像,您可以在 属性 中随时获得完整图像 URL。因此它应该只是

<img src="{{ auth()->user()->profile_photo_url }}" />

长答案

如果您找到 profile_photo_url 属性的来源,它可以在 Laravel\Jetstream\HasProfilePhoto 特征中找到,您会看到它被定义为

/**
 * Get the URL to the user's profile photo.
 *
 * @return string
 */
public function getProfilePhotoUrlAttribute()
{
    return $this->profile_photo_path
                ? Storage::disk($this->profilePhotoDisk())->url($this->profile_photo_path)
                : $this->defaultProfilePhotoUrl();
}

这意味着如果有个人资料照片,则获取定义个人资料照片的磁盘的 URL - 否则,获取默认照片(使用 ui-avatars.com)。

所以这意味着我们必须了解 Storage::disk(..)->url(..) 方法,并弄清楚我们使用的是什么磁盘。默认磁盘是 public 磁盘(你可以相信我的话,或者检查相同特征中的 profilePhotoDisk() 方法)。

所以我们现在知道照片将存储在 public 磁盘下的存储中。接下来,我们需要弄清楚 url() 方法的作用。它本质上生成实际图像的路径,所有这些都可以在 image-soruce 标记中使用。这反过来意味着您不需要通过 asset() 方法 运行 profile_photo_url 属性!另一个原因是,如果来源是外部的,即来自 ui-avatars.com.

的默认图像,您将无法获得实际图像