【问题标题】:Display the image from mysql database in php laravel在 php laravel 中显示来自 mysql 数据库的图像
【发布时间】:2020-05-19 21:47:19
【问题描述】:

我正在尝试显示来自 mysql 数据库的图像。它只是显示图像的名称。图像未显示。如何让它显示? 我正在使用带有 localhost 的 laravel 框架。请调查一下并帮助我..

我的控制器页面代码...

public function stores(Request $request) {
        $this->validate($request, [
            'firstname' => 'required',
            'lastname' => 'required',
            'email' => 'required',
            //'image' => 'image|mimes:jpeg,png,jpg,svg|max:2048',
            'description' => 'required'
        ]);



        if($request->hasFile('image')){
          $image = $request->file('image');
          $filename = time() . '.' . $image->getClientOriginalExtension();
          Image::make($image)->resize(300, 300)->save( storage_path('/uploads/' . $filename ) );
          $blog->image = $filename;
        }

        $blog = new Blogform;
        $blog->first_name = $request->firstname;
        $blog->last_name = $request->lastname;
        $blog->email = $request->email;
        $blog->image = $request->image;
        $blog->description = $request->description;
        $blog->save();
        return redirect('/blog')->with('successMsg', 'Blog form Submitted Successfully');
    }



`my view page code..`

@foreach($blogs as $blog)
<tr>
    <th scope="row"> {{ $blog->id}} </th> 
    <td> {{ $blog->first_name}} </td> 
    <td> {{ $blog->last_name}} </td> 
    <td> {{ $blog->email}} </td> 
    <td> {{ $blog->image}} </td> 
    <td> {{ $blog->description}} </td> 
    <td> {{ $blog->created_at}} </td> 
    <td> {{ $blog->updated_at}} </td> 
</tr>
@endforeach

【问题讨论】:

  • 你的图片标签是带url的吗?
  • 如果你的意思是把照片存入数据库,则需要将图片存为base64存入数据库。图片存入数据库,不保存到服务器。图片路径存入代码以上。
  • @user11010754 请您检查我的答案并给我们反馈

标签: php mysql laravel localhost


【解决方案1】:

修改你的控制器

$blog = new Blogform;
$blog->first_name = $request->firstname;
$blog->last_name = $request->lastname;
$blog->email = $request->email;

if ($request->hasFile('image')) {
    $image = $request->file('image');
    $filename = time() . '.' . $image->getClientOriginalExtension();
    Image::make($image)->resize(300, 300)->save(storage_path('/uploads/' . $filename));
    $blog->image = $filename;
     } else {
          $blog->image = '';
     }
     $blog->description = $request->description;
     $blog->save();
     return redirect('/blog')->with('successMsg', 'Blog form Submitted Successfully');
     }

使用带有img标签的Storage::url()函数

@foreach($blogs as $blog)
<tr>
    <th scope="row"> {{ $blog->id}} </th> 
    <td> {{ $blog->first_name}} </td> 
    <td> {{ $blog->last_name}} </td> 
    <td> {{ $blog->email}} </td> 
    <td> 
        <img src="{{  Storage::disk('public')->url('uploads/'.$blog->image) }}" alt="image" width="50">
    </td> 
    <td> {{ $blog->description}} </td> 
    <td> {{ $blog->created_at}} </td> 
    <td> {{ $blog->updated_at}} </td> 
</tr>
@endforeach

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

注意:-确保.env APP_URL 是正确的

【讨论】:

  • 这是否仍会打印 url 而不是将图像显示为 img 标签不是 thr?
  • @Cerlin 好的,我也添加了图像标签
  • @KamleshPaul 请检查他的代码。他将原始文件名保存到表中。
  • @NipunTharuksha 他只存储图像名称而不是storage_path()
  • @KamleshPaul 是的,他正在重命名图像,但将原始名称保存到 db。所以他在上传文件夹中找不到具有该名称的图像
【解决方案2】:

显示图片时使用img src标签

<td> 
  <img src="{{ Storage::url('uploads/'.$blog->image) }}" alt="image" width="50"> 
</td> 

当您修改名称并存储不同的名称时,请在保存博客时更改如下代码

$blog->image = $filename;

【讨论】:

  • 请检查他的代码。他正在将原始文件名保存到表中。
【解决方案3】:
public function stores(Request $request) {
        $this->validate($request, [
            'firstname' => 'required',
            'lastname' => 'required',
            'email' => 'required|email',
            'image' => 'required|mimes:jpeg, png, jpg',
            'description' => 'required'
        ]);
         $image = $request->file('image');
        if(isset($image)) {

            //make unique name for the image
            $currentDate = Carbon::now()->toDateString();
            $imageName = $currentDate. '-' .$image->getClientOriginalExtension();

            //check for the presence of the directory
            if(!Storage::disk('public')->exists('uploads')) {
                Storage::disk('public')->makeDirectory('uploads');
            }
                //resize the image for uploads
                $uploads = Image::make($image)->resize(200, 200)->stream();
                Storage::disk('public')->put('uploads/' .$imageName, $uploads);

            } else {
            $blog->image = 'default.png'; 
        }
            $blog = new Blogform();   
            $blog->first_name = $request->firstname;
            $blog->last_name = $request->lastname;
            $blog->email = $request->email;
            $blog->image = $imageName;
            $blog->description = $request->description;
            $blog->save();
            return redirect('/blog')->with('successMsg', 'Blog form Submitted Successfully');

    }
```
The above codes works fine as it adds data perfectly to the database.

【讨论】:

  • ` url('/uploads/'.$blog->image) }}" > ` 查看图片对于上面的代码
猜你喜欢
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 2015-01-24
  • 2012-02-03
  • 1970-01-01
  • 2019-07-05
相关资源
最近更新 更多