Строка изображения Base64 в файл изображения, используя PHP - PullRequest
0 голосов
/ 19 апреля 2020

Мне нужен код для преобразования строки изображения base64 в файл изображения и записи в локальный каталог, используя PHP. Я попытался:

function user_profile_photo(){
            $input = urldecode(file_get_contents('php://input'));
            $received = json_decode($input, true);
            $user_id = $received['user_id'];
            $img = $received['imagecode'];
            $imagedata = base64_decode($img);
            $image_path='uploads/images/'.$user_id;             
            $path = '/var/www/html/empengapp/uploads/images/'.$user_id;
            if (!file_exists($path)) {
                   mkdir($path, 0755, true);
             }

$new_name = date('ymd').time().'.jpg';
$pathwithfile = '/var/www/html/empengapp/uploads/images/'.$user_id.'/'.$new_name;
$success = file_put_contents($pathwithfile, $imagedata);
var_dump($imagedata);exit;




            $this->output
                ->set_status_header(200)
                ->set_content_type('application/json', 'utf-8')
                ->set_output(json_encode($resp, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES))
                ->_display();
                exit;
    }//end of function user_profile_photo

Он пишет файл с заданным расширением, но при попытке открыть файл показывает неверную ошибку файла.

1 Ответ

0 голосов
/ 21 апреля 2020

Я разобрался с решением.

        $pathwithfile = 'your file path with image name';//e.g '/uploads/test.jpg'

         $ifp = fopen( $pathwithfile, 'wb' ); 

			    // split the string on commas
			    // $data[ 0 ] == "data:image/png;base64"
			    // $data[ 1 ] == <actual base64 string>
			    $data = explode( ',', $imagedata );
			    $success = fwrite( $ifp, base64_decode( $data[ 1 ] ) );			    // clean up the file resource
			    fclose( $ifp );
          
          

Я отправлял через API на сервер PHP. Вам необходимо кодировать строку base64 изображения, и строка base64 изображения должна содержать «data: image / jpeg; base64». Мы разбиваем его на сервер PHP Но не думайте отправлять изображение base54 без «data: image / jpeg; base64».
Но помните одну вещь: вам нужно использовать image base64, включая

...