首页 > 解决方案 > Laravel:如何通过 API postman 上传图像并将其保存到数据库(phpmyadmin)

问题描述

我想知道如何通过 Laravel 中的 API 邮递员上传图像并保存到我的数据库 phpMyAdmin。当我尝试在邮递员中运行我的代码时,这就是显示的内容:

"image null" 

这是目前我的代码:

横幅 CRUD 控制器:

    <?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Banner;
use Illuminate\Http\Request;

class BannerCRUDController extends Controller
{
    /**
    * Display a listing of the resource.
    *
    * @return \Illuminate\Http\Response
    */
    public function index()
    {
        $banners = Banner::all();
        return response($banners,200);
    }
 
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }
 
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data = $request->validate([
            'id'=>'required',
            'web_banner_profile'=>'required',
        ]);
 
        $image = $request->file('image');
        if($request->hasFile('image')) {
            $new_name = rand() . '.' . $image->getClientOriginalExtension();
            return response()->json($new_name); 
        }else{
            return response()->json('image null');
        }

        $banners = Banner::create($data);

        return response ($banners, 200);
    }
 
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
 
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }
 
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
       //
    }
 
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
       //
    }
 }
 

横幅型号:

    <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Banner extends Model
{
    public $table = "webinar";
    use HasFactory;

    protected $fillable = [
        'id',
        'web_banner_profile',
    ];
}

关于我做错了什么的任何想法,我现在想得到这个,因为我需要创建很多表。

希望有人可以帮助我开始。非常感谢。

标签: laravelpostman

解决方案


您只需使用此代码上传图像并在邮递员中选择类型文件

public function store(Request $request)
    {
        $data = $request->validate([
            'id'=>'required',
            'web_banner_profile'=>'required',
        ]);
 
        $image = $request->file('image');
        if($request->hasFile('image')) {
            $image = time() . '.' . $request->image- 
           >getClientOriginalExtension();
           $request->image->move(public_path('Your Path'), $image);
           $banner->image = 'Your Path' . $image;
   
            return response()->json($image); 
        }else{
            return response()->json('image null');
        }

        $banners = Banner::create($data);

        return response ($banners, 200);
    }

推荐阅读