Laravel:如何通过 API postman 上传图像并将其保存到数据库(phpmyadmin)
Posted
技术标签:
【中文标题】Laravel:如何通过 API postman 上传图像并将其保存到数据库(phpmyadmin)【英文标题】:Laravel: How to upload image and save it to database(phpmyadmin) via API postman 【发布时间】:2021-09-01 22:58:13 【问题描述】:我想知道如何通过 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',
];
关于我做错了什么的任何想法,我想马上得到这个,因为我需要创建很多表。
希望有人可以帮助我开始。非常感谢。
【问题讨论】:
坦率地说,没有人关心 Postman(尤其是当它是自己的 API 时)。我只能看到一个低质量的问题和符合这些标准的答案。最好用你自己的表格发帖,那样它可能会显得更严重。这个问题就像“如何将文件输入添加到 html 表单中?”然后甚至表达了一些紧迫感。我建议阅读说明手册,首先是:***.com/help/asking 这能回答你的问题吗? How to upload a file and JSON data in Postman? 【参考方案1】:您只需使用此代码上传图像并在邮递员中选择类型文件
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);
【讨论】:
我应该把它放在横幅 CRUD 控制器的哪一行?【参考方案2】:在您的 BannerCRUDController.php 中将 store 函数替换为以下内容。
在存储中创建images
目录。
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');
图片将上传到storage/images
。
【讨论】:
我也没有保存在数据库和storageimages中。【参考方案3】:错误是清除请求有空图像。所以你应该在邮递员中选择密钥类型文件
【讨论】:
是的,我做到了 @Mhoreen。你仍然得到错误然后 dd($request->all());以上是关于Laravel:如何通过 API postman 上传图像并将其保存到数据库(phpmyadmin)的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Sanctum Token API 身份验证在 Postman 中不起作用
Laravel API 调用失败。 PostMan 使用 Basic Auth 覆盖 Authorization 标头
对 API 的请求在 Postman 中有效,但在我尝试使用 laravel/guzzle 时无效