【问题标题】:Cannot display image in laravellaravel 无法显示图片
【发布时间】:2020-09-17 11:47:12
【问题描述】:

我尝试使用 Query 使用 laravel 显示图像——图像存储在 storage 目录中,并且已经建立了带有“public”的符号链接。

我尝试过使用: src="{{storage_path('app/public/'.$post->post_image)}}"

src="{{ asset('storage/'.$post->post_image) }}"

src="{{$post->post_image}}"

测试,我发现我可以使用静态路径来成功显示图像,如下所示:

src="{{ asset('storage/images/image_name.jpeg')}}"

但是,这不是我想要的。

查询{{$post->post_image}} 返回以下内容:

127.0.0.1:8000/images/image_name.jpeg

编辑:如果我去编辑数据库并在图片的url前添加“storage/”,那么我可以使用src="{{asset($post->post_image)}}"来显示它。

如前所述,我已经尝试过src="{{asset('storage/' . $post->post_image)}} 而不更改数据库。

【问题讨论】:

  • 您可以使用str_replace()preg_replace()127.0.0.1:8000 更改为storage
  • 这没用,做完之后什么也没发生。
  • post_image 在数据库中是什么样子的?
  • 图像/文件名.jpg
  • @RRios 这很奇怪。 127.0.0.1:8000 应该有权访问您的公用文件夹。

标签: laravel laravel-blade


【解决方案1】:

一定要保存图片的相对路径,之后可以如下访问:

src="{{ asset('storage/'. $post->post_image )}}"

更多信息:docs

【讨论】:

  • 试过这个。它不仅不起作用,而且还破坏了我的 css。
【解决方案2】:

仅将图像名称存储在您的数据库中。

不要添加路径。

您可以在该模型中使用静态方法,将路径作为字符串返回,例如 (return "images/app";)

您可以使用另一种返回 image_url 的方法 这将是路径+图像名称

【讨论】:

  • 数据库中的图片是images/file_name.jpg,我只是尝试添加“storage/”来测试我使用的路径是否有问题。
【解决方案3】:

我相信Storage::url 可以在这里提供帮助。

在您的 Post 模型中,您可以像这样定义一个 url 助手:

public function url()
{
    return Storage::url($this->post_image);
}

别忘了导入 Storage 门面。

use Illuminate\Support\Facades\Storage;

然后像这样检索图像:

{{ $post->url() }}

还要确保您已创建符号链接:

php artisan storage:link

更新

.env 中添加以下内容:

FILESYSTEM_DRIVER=public

它将config/filesystems.php 中的默认FILESYSTEM_DRIVER 更改为public,这意味着它现在在同一文件中使用以下配置

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

然后运行命令php artisan config:cache

https://laravel.com/docs/7.x/filesystem#file-urls

【讨论】:

【解决方案4】:

感谢大家的贡献,这是我使用 jstarnate 和 Abiola 的贡献修复它的方法:

我创建了一个 url 助手并使用 str_replace 正确格式化,如下所示:

    public function url()
{
    return str_replace("http://localhost/storage/http://127.0.0.1:8000/","http://127.0.0.1:8000/storage/",Storage::url($this->post_image));
}

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 2020-12-19
    • 2014-07-25
    • 2015-02-17
    • 2019-08-14
    • 2017-04-02
    • 1970-01-01
    • 2018-07-18
    • 2012-03-10
    相关资源
    最近更新 更多