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

laravel storing images on database with full path and I cant retrieve

提问人:sunset-crow 提问时间:11/16/2023 更新时间:11/16/2023 访问量:48

问:

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

这是我要插入的表格:,

 <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赞 brombeer 11/16/2023
如果您的所有图像总是从 URL 中存储/检索,我认为仅将图像名称存储在数据库中就足够了 - 不要将其存储文件夹。这样,如果您打算重命名该文件夹,则不必更新数据库中的所有图像路径images\posts

答:

1赞 Hellal Merwan 11/16/2023 #1

您需要使用 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

评论

0赞 sunset-crow 11/17/2023
多谢!关于 img src,我将其重新设计为工作:“<img src=”{{ asset('storage/') .('/').$post->拇指 }}“ />”