Php Laravel如何将图像上载到数据库并在视图中显示

Php Laravel如何将图像上载到数据库并在视图中显示,php,laravel,Php,Laravel,因此,我制作了一个由三个字段组成的表单,标题、缩略图和文本区域(使用文本编辑器),它似乎可以上传图像,因为我注意到在提交表单后,我在我的/public/image文件夹中上传了图像,但是当我检查数据库时,缩略图字段显示的不是/public/image文件夹中的文件名,比如20190713125534.jpg,而是 C:\xampp\tmp\phpC18A.tmp 我很困惑,我以为它根本不会上传图像,但正如我之前解释的那样,我的问题是如何用文件名更改缩略图字段的值,以及如何在视图中显示图像 这是

因此,我制作了一个由三个字段组成的表单,标题、缩略图和文本区域(使用文本编辑器),它似乎可以上传图像,因为我注意到在提交表单后,我在我的
/public/image
文件夹中上传了图像,但是当我检查数据库时,缩略图字段显示的不是
/public/image
文件夹中的文件名,比如20190713125534.jpg,而是

C:\xampp\tmp\phpC18A.tmp
我很困惑,我以为它根本不会上传图像,但正如我之前解释的那样,我的问题是如何用文件名更改缩略图字段的值,以及如何在视图中显示图像

这是我的Blogcontroller.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Blog;
use Validator,Redirect,Response,File;

class BlogController extends Controller
{
    public function index()
    {
        $blogs = Blog::get();
        return view('post.post_textarea',[
            'blogs' => $blogs
        ]);
    }

    public function store(Request $request)
    {
        Blog::create([
            'name' => $request->name,
            'message' => $request->message,
            'thumbnail' => $request->thumbnail,
       ]);
       if ($files = $request->file('thumbnail')) {
           $destinationPath = 'public/image/'; // upload path
           $profileImage = date('YmdHis') . "." . $files->getClientOriginalExtension();
           $files->move($destinationPath, $profileImage);
           $insert['thumbnail'] = "$profileImage";
        }
        return redirect()->back();
    }

    public function getFullPost($blog_id) {
    $blogs = Blog::where('id', '=', $blog_id)->get();
    return view('post.read')->with(compact('blogs'));
    }
}

尝试将此添加到控制器中

$blog = new Blog;
$blog->name = $request->name;
$blog->message = $request->message;
if($request->hasFile('thumbnail')) {

            $file = Input::file('thumbnail');
            //getting timestamp
            $timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
            $name = $timestamp. '-' .$file->getClientOriginalName();
            $file->move(public_path().'/images/', $name);
            $blog->thumbnail = url('/images/' . $name);

        }
$blog->save();

return back();
比你认为的要好

@foreach ($blogs as $blog)
     <div class="blog-item">
          <div class="blog-thumb">
               <img src="{{ $blog->thumbnail }}" alt="">  ->this is where i was supposed to fetch the image
          </div>

     <div class="blog-text text-box text-white">                            
           <div class="top-meta">{{ Carbon\Carbon::parse($blog->created_at)->format('d-m-Y')  }} /  di <a href="">Rakitan</a></div>
            <h3>{{ $blog->name }}</h3>
            <p>{!! \Illuminate\Support\Str::words($blog->message, 30, '...') !!}</p>
            <a href="{{ route('post.read', ['blog_id' => $blog->id]) }}" class="read-more">Lanjutkan Baca  <img src="asset/img/icons/double-arrow.png" alt="#"/></a>

           </div>
        </div>
@endforeach
@foreach($blogs作为$blog)
缩略图}}“alt=”“>->这是我应该获取图像的地方
{{Carbon\Carbon::parse($blog->created_at)->格式('d-m-Y')}}/di
{{$blog->name}
{!!\illumb\Support\Str::words($blog->message,30,“…”)

@endforeach
尝试将此添加到控制器中

$blog = new Blog;
$blog->name = $request->name;
$blog->message = $request->message;
if($request->hasFile('thumbnail')) {

            $file = Input::file('thumbnail');
            //getting timestamp
            $timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
            $name = $timestamp. '-' .$file->getClientOriginalName();
            $file->move(public_path().'/images/', $name);
            $blog->thumbnail = url('/images/' . $name);

        }
$blog->save();

return back();
比你认为的要好

@foreach ($blogs as $blog)
     <div class="blog-item">
          <div class="blog-thumb">
               <img src="{{ $blog->thumbnail }}" alt="">  ->this is where i was supposed to fetch the image
          </div>

     <div class="blog-text text-box text-white">                            
           <div class="top-meta">{{ Carbon\Carbon::parse($blog->created_at)->format('d-m-Y')  }} /  di <a href="">Rakitan</a></div>
            <h3>{{ $blog->name }}</h3>
            <p>{!! \Illuminate\Support\Str::words($blog->message, 30, '...') !!}</p>
            <a href="{{ route('post.read', ['blog_id' => $blog->id]) }}" class="read-more">Lanjutkan Baca  <img src="asset/img/icons/double-arrow.png" alt="#"/></a>

           </div>
        </div>
@endforeach
@foreach($blogs作为$blog)
缩略图}}“alt=”“>->这是我应该获取图像的地方
{{Carbon\Carbon::parse($blog->created_at)->格式('d-m-Y')}}/di
{{$blog->name}
{!!\illumb\Support\Str::words($blog->message,30,“…”)

@endforeach
关于代码的问题,我认为在存储功能中,您没有正确保存代码。请参阅下面的我的代码,将缩略图的链接保存到db中

    <?php
       namespace App\Http\Controllers;
       use Illuminate\Http\Request;
       use App\Http\Requests;
       use App\Http\Controllers\Controller;
       use App\Blog;    

       class BlogController extends Controller{

        //some your function goes here      
        /**
         * Store a newly created resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return \Illuminate\Http\Response
         */
          public function store(Request $request)
          {
                $blog = new Blog;
                $blog->name = $request->input('name');              
                $blog->message = $request->input('message');

                $file = $request->file('your_thumbnail');
                //make sure yo have image folder inside your public
                $destination_path = 'image/';
                $profileImage = date("Ymd").".".$file->getClientOriginalName();
                $file->move($destination_path, $profileImage);
                //save the link of thumbnail into myslq database        
                $blog->thumbnail = $destination_path . $profileImage;
                $blog->save();
                return redirect()->back();
           }
    }

关于代码的问题,我认为在存储功能中,您没有正确保存代码。请参阅下面的我的代码,将缩略图的链接保存到db中

    <?php
       namespace App\Http\Controllers;
       use Illuminate\Http\Request;
       use App\Http\Requests;
       use App\Http\Controllers\Controller;
       use App\Blog;    

       class BlogController extends Controller{

        //some your function goes here      
        /**
         * Store a newly created resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return \Illuminate\Http\Response
         */
          public function store(Request $request)
          {
                $blog = new Blog;
                $blog->name = $request->input('name');              
                $blog->message = $request->input('message');

                $file = $request->file('your_thumbnail');
                //make sure yo have image folder inside your public
                $destination_path = 'image/';
                $profileImage = date("Ymd").".".$file->getClientOriginalName();
                $file->move($destination_path, $profileImage);
                //save the link of thumbnail into myslq database        
                $blog->thumbnail = $destination_path . $profileImage;
                $blog->save();
                return redirect()->back();
           }
    }

它显示了一个错误类“App\Http\Controllers\Input”找不到,我应该制作另一个控制器吗?在顶部添加这个应该可以工作``使用illumb\Support\Facades\Input;使用碳\碳```它显示了另一个错误,上面写着“ErrorException从空值创建默认对象”``刷新并再试一次哇哦,是的,成功了谢谢@sid heart你真的保存了我它显示了一个错误类“App\Http\Controllers\Input”找不到,我应该再做一个控制器吗?在上面加上这个应该可以``使用Illumb\Support\Facades\Input;使用碳\碳```它显示了另一个错误,上面写着“ErrorException从空值创建默认对象”``刷新并再试一次哇哦是的,成功了谢谢@sid heart你真的救了我