1

我无法使用资产获取正确的图像 URL 以显示在视图中。storage当我使用该函数时,生成的所需 URL中缺少,asset我必须手动添加storage路径,如asset('storage/' . $post->image)

我不明白为什么 Laravel 不storage自动添加?

符号链接存储

我使用以下命令创建了存储文件夹的符号链接

php artisan storage:link

问题:
我正在寻找的是storage文件夹应该被动态添加到路径中,所以我只需要通过$post->image.

控制器

public function store(PostRequest $request)
{
    // upload the image to storage
    $image = $request->image->store('posts', 'public');

    // create the post
    Post::create([
        'title'       => $request->title,
        'description' => $request->description,
        'content'     => $request->content,
        'image'       => $image,
    ]);

    // redirect with flash message
    return redirect(route('posts.index'))->with('success', 'Post is created');

}

DBimage列存储路径

posts/ibexiCvUvbPKxzOLSMHQKPpDq7eZXrFA0stBoPfw.jpeg

看法

<tbody>
@foreach($posts as $post)
    <tr>
        <td>
            <img src="{{asset($post->image)}}"  width="60" height="60" alt="">
        </td>
        <td>{{ $post->title }}</td>
    </tr>
@endforeach
</tbody>

存储路径

在此处输入图像描述

HTML 源代码

在此处输入图像描述

正如您在上面的参考资料中看到的那样,我必须添加正确的storageURLasset('storage/'. $post->image)

4

2 回答 2

4

使用Storage::url()功能

<tbody>
@foreach($posts as $post)
    <tr>
        <td>
            <img src="{{ Storage::url($post->image)}}"  width="60" height="60" alt="">
        </td>
        <td>{{ $post->title }}</td>
    </tr>
@endforeach
</tbody>

参考链接https://laravel.com/docs/7.x/filesystem#file-urls

于 2020-04-02T07:19:15.100 回答
0

另一种可能有用的方法是在您的 .env 文件中使用 ASSET_URL,例如:

APP_URL=http://localhost:8000
ASSET_URL = http://localhost:8000/storage

我在我的 APP_URL 上附加了“storage”来更改资产辅助函数的默认补丁,然后您可以在视图中使用资产函数,例如:

 <img src="{{asset($post->image)}}"  width="60" height="60" alt="">

我希望这种方式可以帮助你。

于 2020-10-07T06:22:50.563 回答