【问题标题】:showing images in Laravel 8 live wire在 Laravel 8 火线中显示图像
【发布时间】:2021-01-05 10:04:08
【问题描述】:

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

我已经添加了如下图片

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

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

【问题讨论】:

    标签: laravel laravel-8 laravel-livewire


    【解决方案1】:

    快速解答

    您不必使用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 - 否则,获取默认的 URL(使用 ui-avatars.com)。

    所以这意味着我们必须了解Storage::disk(..)-&gt;url(..) 方法,并弄清楚我们正在使用什么磁盘。默认磁盘是公共磁盘(您可以相信我的话,或者检查同一 trait 中的 profilePhotoDisk() 方法)。

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

    【讨论】:

    • 嗯,我注意到应用程序 url 中有一个错误,并将其更改为 127.0.0.1:8000,但仍然不会显示图像
    猜你喜欢
    • 2021-05-30
    • 2021-01-13
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 2016-12-20
    • 2021-03-25
    相关资源
    最近更新 更多