xcalliber
xcalliber

Reputation: 305

how to save base64 image server side

how can i save image server side i have this code but for some reason the image that i upload to the server is saved as text/x-generic. what can i do to fix this?

<?php

  function base64_to_image($base64_string) {

      $data = explode(',', $base64_string);
      $ext = "";
      switch ($data[0]) {
          case "data:image/png;base64";
              $ext = "png";
              break;
          case "data:image/jpg;base64";
              $ext = "jpg";
              break;
          case "data:image/jpeg;base64";
              $ext = "jpg";
              break;
          case "data:image/gif;base64";
              $ext = "gif";
              break;
      }

      $milli = round(microtime(true) * 1000);

      $output_file = "img/" . date('Y-m-d_H:i:s') . "." . $milli . "." . $ext; 
      $ifp = fopen($output_file, "wb"); 

    
      fwrite($ifp, base64_decode($data[1])); 
      fclose($ifp); 

      return $ifp; 

  }

  $file = base64_to_image($_POST['file']);
  var_dump($file);
?>

Upvotes: 2

Views: 12402

Answers (1)

Afshan Shujat
Afshan Shujat

Reputation: 551

I used this function to save base64 image and it's working fine. Try this-

function saveBase64ImagePng($base64Image, $imageDir)
{
    //set name of the image file

    $fileName =  'test.png';

    $base64Image = trim($base64Image);
    $base64Image = str_replace('data:image/png;base64,', '', $base64Image);
    $base64Image = str_replace('data:image/jpg;base64,', '', $base64Image);
    $base64Image = str_replace('data:image/jpeg;base64,', '', $base64Image);
    $base64Image = str_replace('data:image/gif;base64,', '', $base64Image);
    $base64Image = str_replace(' ', '+', $base64Image);

    $imageData = base64_decode($base64Image);
    //Set image whole path here 
    $filePath = $imageDir . $fileName;


   file_put_contents($filePath, $imageData);


}

Hope this will help you.

Upvotes: 5

Related Questions