当前位置: 首页 > 知识库问答 >
问题:

Laravel:如何上传图像并通过API邮递员保存到数据库(phpmyadmin)

曹疏珂
2023-03-14

我想知道如何上传一个图像通过API邮递员在拉威尔和保存到我的数据库,这是phpMyAdmin。当我尝试在postman中运行代码时,会显示以下内容:

"image null" 

这是我目前的代码:

横幅积垢控制器:

    <?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',
    ];
}

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

希望有人能帮助我开始。谢谢。

共有3个答案

宗政博文
2023-03-14

错误是清除请求具有空图像。所以你应该选择关键类型文件在邮递员

奚曦哲
2023-03-14

在BannerCrudeController中将存储功能替换为以下内容。php
在存储器中创建图像目录。

public function store(Request $request)
    {
        $data = $request->validate([
            'id'=>'required',
            'web_banner_profile'=>'required',
        ]);
 
        $image = $request->file('image');
        if($request->hasFile('image')) {
             $image = $request->file('image');
             $destinationPath = storage_path('images');
             $fileName = str_random(6) . time() . "." . $image->getClientOriginalExtension();
             $image->move($destinationPath, $fileName);
             $banner = new Banner();
             $banner->web_banner_profile = $fileName:
             $banner->save()
            return response()->json($fileName); 
        }else{
            return response()->json('image null');
        }

      
    }

图像将上传存储/图像中。

周龙光
2023-03-14

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

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);
    }
 类似资料:
  • 我对AWS很陌生,我在那个区域创建了s3 bucket,并将access keys区域传递到我的.env文件中,并编辑了conig/filesystems.php和我编写的用于发布数据的控制器,我的数据是混合型的,它包含二进制和普通数据,所以我有点困惑在postman中必须使用哪种内容类型(content-type=,在头内)。如果我使用普通content-type=application/jso

  • 问题内容: 我必须使用JavaScript创建一个表单,用户将上载JPG文件并与其他信息(例如名称,电子邮件等)一起提交。当用户单击提交时,表单中的所有信息将被加载到值对象中。对于图像文件,我将其设置为。 所以假设: 我还设置了一个servlet来处理提交,但是我不确定如何开始。上传如何进行?用户提交时,如何获取图像信息?这是屏幕截图:http : //imageshack.us/f/32/776

  • 我正在使用一个Vaadin上传组件,到目前为止,我已经成功地将一个图像上传到一个目录,并在成功上传后在面板组件中显示它。在这之后,我想做的是把它也插入到数据库中。我有一个名为Show的表,它有一个名称、日期和图像。在Show类中,我尝试将图像作为字节数组或Blob。 在上传成功的方法中,我想将文件转换为字节数组,到目前为止我已经尝试过了: 我也试过: uIP它实际上是我的上传ImagePresen

  • 我的主要目标是使用Microsoft Graph API将。pptx/.docx/.pdf文件上传到Microsoft Sharepoint。我可以使用下面的“PUT”请求上传到简单的文本文件,其中的内容类型是多部分/表单数据 ---------------------------------404518839734975569926100内容-处理:表单-数据;name=“文件”;filenam

  • 我试图上传一个文件到我的服务器使用一个endpoint通过Spring公开。然而,当我试图通过邮递员测试api时,我得到当前请求不是一个多部分请求错误。我通过这个问题多部分异常:当前请求不是多部分请求,但仍然无法修复此问题。请帮助。提前感谢。 这是我的控制器: 我的服务: 正如您在下面看到的,我将文件作为表单数据发送,并且没有设置任何标题

  • 我尝试了什么:将其添加到@PostMapping()-->没有成功 在Postman中:添加了和 他们两个都没有成功:(... 问候,