【问题标题】:rendering image from storage/app/public folder in laravel从 laravel 的 storage/app/public 文件夹中渲染图像
【发布时间】:2018-06-18 16:33:59
【问题描述】:

我已经使用这些代码行在 laravel 中上传了我的图片:

        if($request->hasFile('filea'))

    {   

        $filepath = $request->filea->getClientOriginalName();

        $request->filea->storeAs('public/upload',$filepath);

    }

并将文件名存储在数据库中。图像已成功存储在我的硬盘中。当我尝试在模板中渲染图像时,我使用了这个:

<img src="{{ asset('public/upload/'.$user->imagepath) }}/>"

这将创建此链接:

<img src="http://localhost:28965/public/upload/IMG_20170906_105035.jpg"/>

也试过了:

<img src="{{ asset('upload/'.$user->imagepath) }}/>"

但没有渲染图像。这里有什么语法错误

【问题讨论】:

  • 您不应该将 public 与asset() 一起使用,因为asset() 已经使用了web 目录。很难知道您是如何设置本地 Web 服务器的,但是如果您正确配置了 APP_URL 并且文件存在于 public/uploads 中,那么最后一个示例应该可以工作。
  • 如何设置APP_URL?在哪个文件中?
  • APP_URL 应该在您的 .env 文件中作为应用程序根目录的 url。
  • 一切似乎都很完美。APP_URL=localhost 写在 .env 文件中
  • 这似乎不是 laravel 的问题,如果你的 url 没问题但图片没有显示。可能是网络服务器配置的问题。

标签: laravel image assets


【解决方案1】:

您是否创建了符号链接? ,你可以使用 storage:link Artisan 命令:

php artisan storage:link

【讨论】:

    【解决方案2】:
    <img src="{{ asset('upload/'.$user->imagepath) }}">
    

    如果文件存在于 public/uploads 中,这应该可以工作,并检查 .env 文件中的 APP_URL。
    如果您的文件在您的存储中请尝试:
    storage_path('app/public/upload'.$user->imagepath)
    喜欢:

    <img src="{{ storage_path('app/public/upload'.$user->imagepath) }}">
    

    【讨论】:

    • 不走运。这个也试过了。为此创建的 URL 是:localhost:28965/upload/IMG_20170906_105035.jpg 图像在 HDD 中。但没有渲染。
    • @Yunus 图像在此路径中但不渲染?
    • 实际路径是这样的:->storage ->app ->public ->upload ->IMG_20170906_105035.jpg
    • 请尝试:storage_path('app/public/upload'.$user->imagepath);
    • 我的最后一条评论将帮助您,无需更改任何配置文件尝试一下。
    【解决方案3】:

    我找到了解决方案。发生的事情是这样的: 我已经在 laravel 中上传了图片,所以它将存储在 存储/应用程序/公共。但是,如果我尝试通过资产访问,它将无法正常工作,因为资产是指公用文件夹。所以我阅读了包含这些行的 config/filesystems.php :

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

    所以这意味着访问 localhost:port/storage 将链接到 storage/app/public 文件夹。所以我运行了这个命令

    php artisan storage:link
    

    在渲染的图像源中我写了这个:

    <img src="{{ url('storage/upload/'.$user->imagepath) }}" />
    

    它奏效了。

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 2022-01-09
      • 2016-10-28
      • 2021-07-28
      • 2020-10-31
      • 2020-12-12
      相关资源
      最近更新 更多