laravel 将图像以完整路径存储在数据库中,但我无法检索

问题描述 投票:0回答:1

我正在制作一个网站,您可以在其中通过表单存储文件,然后它会显示在页面上。

这是我要插入的表格:,

 <form action="{{ route('post.store') }}" method="POST" enctype="multipart/form-data">
                @csrf
                <div class="bg-grey-lighter pt-15">
                    <label
                        class="w-44 flex flex-col items-center px-2 py-3 bg-white-rounded-lg shadow-lg tracking-wide uppercase border border-blue cursor-pointer">
                        <input type="file" name="thumb" class="hidden">
                    </label>
                </div><br>

这是我用来显示图像的代码:

            <img src="{{  asset('/images/posts/' . $post->thumb }}" class="img-post" />
            <br>

这是我的PostController:(拇指是数据库中字段的名称)


    public function update(Request $request, Post $post, $id)
    {


        $post = Post::findOrFail($id);
      
        $path = public_path('images/');
        $imageName = time(). '.' . $request->thumb->extension();  
        $post->thumb = $request->thumb->move($path, $imageName); 


            $request->validate([
                'thumb' => 'mimes:jpeg,png,jpg,gif',
            ]);
    

        $post->update();
        return redirect()->back()->with('success', 'updated');
    }

在数据库中存储如下:

C:\Users\users name\Documents\laravel\projeto-qbv2\public\images/posts\1700092184.png

在 Laravel 中,图像存储在:

public\images\posts

已经尝试更改功能,img src...

php mysql laravel laravel-blade
1个回答
0
投票

你需要使用laravel文件存储系统。

首先您需要配置存储符号链接。 您可以通过在 artisan CLI 中运行此命令来完成此操作:

    php artisan storage:link

您可以在文件系统配置文件中配置其他符号链接。当您运行 storage:link 命令时,将创建每个配置的链接:

'links' => [
    public_path('storage') => storage_path('app/public'),
    public_path('images') => storage_path('app/images'),
],

之后,您就可以简单地使用存储功能了:

你的 PostController.php 代码将是这样的:

public function update(Request $request, Post $post, $id)
{


    $post = Post::findOrFail($id);
    $request->validate([
            'thumb' => 'mimes:jpeg,png,jpg,gif',
        ]);
    if ($request->hasFile('logo')) {

    $path = $request->logo->store('/images');
    $post->thumb = $path;

    $post->update();
    return redirect()->back()->with('success', 'updated');
    }
  
    
}

这是您应该用来显示图像的代码:

        <img src="{{  asset('/storage/' . $post->thumb }}" class="img-post" />
        <br>

希望对您有帮助。

有关这方面的更多信息,我推荐 Laravel 文档:https://laravel.com/docs/10.x/filesystem

© www.soinside.com 2019 - 2024. All rights reserved.