如何使用Laravel上传图像?

如何使用Laravel上传图像?,laravel,image,file,path,upload,Laravel,Image,File,Path,Upload,问题是: 我想使用Laravel将一个图像上传到mySQL数据库 我所尝试的: 我寻找了其他堆栈溢出问题,但它们没有帮助 我期待的结果是: 是将图像名称或路径保存到数据库“我的表”中的一列中,以便稍后检索并显示为博客中的文章。首先,您需要视图中的表单不要忘记csrf标记: <form action="/image-upload" method="POST" enctype="multipart/form-data"> @csrf <input type="fil

问题是: 我想使用Laravel将一个图像上传到mySQL数据库

我所尝试的: 我寻找了其他堆栈溢出问题,但它们没有帮助

我期待的结果是:
是将图像名称或路径保存到数据库“我的表”中的一列中,以便稍后检索并显示为博客中的文章。

首先,您需要视图中的表单不要忘记csrf标记:

<form action="/image-upload" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="image">
    <button type="submit">Upload</button>
</form>
然后在控制器上创建一个函数,该函数将验证图像并将其移动到“public/images”文件夹中

public function imageUploadPost()
{
    request()->validate([
        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

    $imageName = time().'.'.request()->image->getClientOriginalExtension();
    request()->image->move(public_path('images'), $imageName);
}

要获得更好的解决方案,请阅读以下内容:

首先,您需要视图上的表单。不要忘记csrf令牌:

<form action="/image-upload" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="image">
    <button type="submit">Upload</button>
</form>
然后在控制器上创建一个函数,该函数将验证图像并将其移动到“public/images”文件夹中

public function imageUploadPost()
{
    request()->validate([
        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

    $imageName = time().'.'.request()->image->getClientOriginalExtension();
    request()->image->move(public_path('images'), $imageName);
}

要获得更好的解决方案,请阅读以下内容:

实际上,对于Laravel,它只涉及几行代码。假设您有一个用户拥有存储在数据库中的化身。以下是您如何从数据库中存储和检索化身:

一,。首先,您需要在users表中有一个可以存储二进制数据的avatar列。根据您希望允许化身图像的大小,列的数据类型可以是以下之一:

最大64KB的BLOB

高达16MB的MEDIUMBLOB

高达4GB的LONGBLOB

二,。要将上载的图像存储在数据库中,可以执行以下操作:

路由::post'user/{id}',函数请求$Request,$id{ //从请求中获取文件 $file=$request->file'image'; //获取文件的内容 $contents=$file->openFile->fread$file->getSize; //将内容存储到数据库中 $user=App\user::find$id; $user->avatar=$contents; $user->save; }; 三,。要获取并输出化身,您可以执行以下操作:

路由::获取'user/{id}/avatar',函数$id{ //查找用户 $user=App\user::find1; //在响应中返回具有正确MIME类型的图像 返回响应->生成$user->化身,200,阵列 “内容类型”=>new finfoFILEINFO_MIME->buffer$user->avatar ; };
注意:请记住这一点,MySQL不是存储BLOB的合适解决方案。您可能需要使用类似AmazonS3的对象存储服务。

实际上,对于Laravel,它只涉及几行代码。假设您有一个用户拥有存储在数据库中的化身。以下是您如何从数据库中存储和检索化身:

一,。首先,您需要在users表中有一个可以存储二进制数据的avatar列。根据您希望允许化身图像的大小,列的数据类型可以是以下之一:

最大64KB的BLOB

高达16MB的MEDIUMBLOB

高达4GB的LONGBLOB

二,。要将上载的图像存储在数据库中,可以执行以下操作:

路由::post'user/{id}',函数请求$Request,$id{ //从请求中获取文件 $file=$request->file'image'; //获取文件的内容 $contents=$file->openFile->fread$file->getSize; //将内容存储到数据库中 $user=App\user::find$id; $user->avatar=$contents; $user->save; }; 三,。要获取并输出化身,您可以执行以下操作:

路由::获取'user/{id}/avatar',函数$id{ //查找用户 $user=App\user::find1; //在响应中返回具有正确MIME类型的图像 返回响应->生成$user->化身,200,阵列 “内容类型”=>new finfoFILEINFO_MIME->buffer$user->avatar ; };
注意:请记住这一点,MySQL不是存储BLOB的合适解决方案。您可能需要使用类似Amazon S3的对象存储服务。

使用此服务上载图像

   /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
       // $this->validate($request,[//'movie_name'=>'required',
       //     // 'description'=>'required',
       //      //'video_url'=>'required',
       //      'image'=>'required|mimes:jpeg,jpg,png,gif|required|max:10000',
       //  ]);

   if ($request->hasFile('image') && $request->hasFile('image2')) {
     $file = $request->file('image');
     //$image=$file->getClientOriginalName();
     $image = time().'.'.$file->getClientOriginalExtension();
     $destinationPath ='assets/admin/uploads/image/';
     $file->move($destinationPath,$image);
     //echo  $destinationPath;exit();
        //echo  $image."<br/>";
    $file2 = $request->file('image2');
    $bg_images = time().'.'.$file2->getClientOriginalExtension();
    //$bg_images=$file2->getClientOriginalName();
    $destinationPath ='assets/admin/uploads/bg_images/';
    $file2->move($destinationPath,$bg_images);
     $insert_data=array('movie_name'=>$request->movie_name,
            'description'=>$request->description,
            'video_url'=>$request->video_url,
            'image'=>$image,
            'bg_images'=>$bg_images,
            'created_at'=>now(),
            'updated_at'=>now()
        );
        //print_r($insert_data);exit();
    }
    else
    {
        if ( $request->hasFile('image2')) {
         $file2 = $request->file('image2');
         $bg_images = time().'.'.$file2->getClientOriginalExtension();
        //$bg_images=$file2->getClientOriginalName();
         $destinationPath ='assets/admin/uploads/bg_images/';
         $file2->move($destinationPath,$bg_images);
         //echo  $destinationPath;exit();
            //echo $bg_images;
             $insert_data=array('movie_name'=>$request->movie_name,
                'description'=>$request->description,
                'video_url'=>$request->video_url,
                //'image'=>$image,
                'bg_images'=>$bg_images,
                'created_at'=>now(),
                'updated_at'=>now()
            );
        //print_r($insert_data);exit();
        }
        if ($request->hasFile('image') ) {
         $file = $request->file('image');
         //$image=$file->getClientOriginalName();
         $image = time().'.'.$file->getClientOriginalExtension();
         $destinationPath ='assets/admin/uploads/image/';
         $file->move($destinationPath,$image);
         //echo  $destinationPath;exit();
            //echo  $image."<br/>";
          $insert_data=array('movie_name'=>$request->movie_name,
                'description'=>$request->description,
                'video_url'=>$request->video_url,
                'image'=>$image,
                //'bg_images'=>$bg_images,
                'created_at'=>now(),
                'updated_at'=>now()
            );
           // print_r($insert_data);exit();
        }
        if ( ! $request->hasFile('image2') && ! $request->hasFile('image') ) {
           $insert_data=array('movie_name'=>$request->movie_name,
                    'description'=>$request->description,
                    'video_url'=>$request->video_url,
                    //'image'=>$image,
                   // 'bg_images'=>$bg_images,
                    'updated_at'=>now()
                    );
           // print_r($update_data);exit();
        }
    }    
    //exit();

    // echo $image;
    //exit();

    //print_r($insert_data);exit();
    $insert=DB::table('movies')->insert($insert_data);
    if ($insert) {
        return redirect()->route('admin.list_movies')->withSuccess('Record saved');
    }
    else {
        return redirect()->route('admin.list_movies')->withError('Record not saved');
    }
}

使用此选项上载图像

   /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
       // $this->validate($request,[//'movie_name'=>'required',
       //     // 'description'=>'required',
       //      //'video_url'=>'required',
       //      'image'=>'required|mimes:jpeg,jpg,png,gif|required|max:10000',
       //  ]);

   if ($request->hasFile('image') && $request->hasFile('image2')) {
     $file = $request->file('image');
     //$image=$file->getClientOriginalName();
     $image = time().'.'.$file->getClientOriginalExtension();
     $destinationPath ='assets/admin/uploads/image/';
     $file->move($destinationPath,$image);
     //echo  $destinationPath;exit();
        //echo  $image."<br/>";
    $file2 = $request->file('image2');
    $bg_images = time().'.'.$file2->getClientOriginalExtension();
    //$bg_images=$file2->getClientOriginalName();
    $destinationPath ='assets/admin/uploads/bg_images/';
    $file2->move($destinationPath,$bg_images);
     $insert_data=array('movie_name'=>$request->movie_name,
            'description'=>$request->description,
            'video_url'=>$request->video_url,
            'image'=>$image,
            'bg_images'=>$bg_images,
            'created_at'=>now(),
            'updated_at'=>now()
        );
        //print_r($insert_data);exit();
    }
    else
    {
        if ( $request->hasFile('image2')) {
         $file2 = $request->file('image2');
         $bg_images = time().'.'.$file2->getClientOriginalExtension();
        //$bg_images=$file2->getClientOriginalName();
         $destinationPath ='assets/admin/uploads/bg_images/';
         $file2->move($destinationPath,$bg_images);
         //echo  $destinationPath;exit();
            //echo $bg_images;
             $insert_data=array('movie_name'=>$request->movie_name,
                'description'=>$request->description,
                'video_url'=>$request->video_url,
                //'image'=>$image,
                'bg_images'=>$bg_images,
                'created_at'=>now(),
                'updated_at'=>now()
            );
        //print_r($insert_data);exit();
        }
        if ($request->hasFile('image') ) {
         $file = $request->file('image');
         //$image=$file->getClientOriginalName();
         $image = time().'.'.$file->getClientOriginalExtension();
         $destinationPath ='assets/admin/uploads/image/';
         $file->move($destinationPath,$image);
         //echo  $destinationPath;exit();
            //echo  $image."<br/>";
          $insert_data=array('movie_name'=>$request->movie_name,
                'description'=>$request->description,
                'video_url'=>$request->video_url,
                'image'=>$image,
                //'bg_images'=>$bg_images,
                'created_at'=>now(),
                'updated_at'=>now()
            );
           // print_r($insert_data);exit();
        }
        if ( ! $request->hasFile('image2') && ! $request->hasFile('image') ) {
           $insert_data=array('movie_name'=>$request->movie_name,
                    'description'=>$request->description,
                    'video_url'=>$request->video_url,
                    //'image'=>$image,
                   // 'bg_images'=>$bg_images,
                    'updated_at'=>now()
                    );
           // print_r($update_data);exit();
        }
    }    
    //exit();

    // echo $image;
    //exit();

    //print_r($insert_data);exit();
    $insert=DB::table('movies')->insert($insert_data);
    if ($insert) {
        return redirect()->route('admin.list_movies')->withSuccess('Record saved');
    }
    else {
        return redirect()->route('admin.list_movies')->withError('Record not saved');
    }
}

您应该能够使用文件输入获取所需信息:单击此处您应该能够使用文件输入获取所需信息:单击此处