validate([ 'gambar_base64' => 'required|string', ]); $base64_string = $request->gambar_base64; // Jika ada prefix data:image/jpeg;base64, maka hapus dulu if (strpos($base64_string, 'base64,') !== false) { $base64_string = explode('base64,', $base64_string)[1]; } $imageData = base64_decode($base64_string); if ($imageData === false) { return response()->json(['success' => false, 'message' => 'Base64 tidak valid'], 400); } $namaFile = 'foto_' . time() . '.jpg'; Storage::disk('public')->put($namaFile, $imageData); $foto = Foto::create([ 'foto' => $namaFile ]); return response()->json([ 'success' => true, 'message' => 'Foto berhasil disimpan', 'foto' => $foto, 'url' => asset('storage/' . $namaFile), ]); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($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) { // } }