[문의] curl로 ocr 구현 중 에러가 발생을 해서 문의 드립니다

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $kakao_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// 카카오 REST KEY 셋팅
$headers = [
'Authorization: KakaoAK ’ . $config[‘kakao_token’],
‘Content-Type: multipart/form-data’,
];

$exec[‘headers’] = $headers;

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

if (!empty($kakao[‘image’]))
{
$data = array(‘image’ => ‘@’.realpath($kakao[‘image’]));
$exec[‘data’] = $data;

curl_setopt($ch, CURLOPT_POST, true);
//$exec['param'] = $data = 'image=@'.$kakao['image'];
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

}

$exec[‘result’] = curl_exec ($ch);
$exec[‘info’] = curl_getinfo($ch);
$exec[‘err_no’] = curl_errno($ch); //에러정보 출력
$exec[‘err_msg’] = curl_error($ch); //에러정보 출력
curl_close ($ch);

return $exec;

위와 같이 curl로 구현하여 테스트 해 보면 결과가
{“code”:-911,“msg”:“invalid image”} 이렇게 나옵니다.
해당 에러 메세지를 찾아 보니 “지원하지 않는 포맷의 이미지를 업로드 하는 경우” 라고 하는데
이미지는 png로 해보고 jpg로 해봐도 똑같습니다.
이미지에 타입도 붙여 보고 해도 마찬가지고 자료 찾아보며 하다가 도저히 답이 안보여 이곳에 적어 봅니다.
현재 테스트는 로컬에서 하고 있습니다.
해당 부분에 대한 아낌없는 조언 부탁드립니다.

안녕하세요~

‘@’.realpath($kakao[‘image’]

위와 같이 realpath 함수를 사용하셨는데요.
php 5.5이상은 curl_file_create함수를 사용하셔야 합니다.

    $image_full_path = $_FILES["myfile"];
    if (function_exists('curl_file_create')) { // php 5.5+
        $cFile = curl_file_create($image_full_path);
    } else { 
        $cFile = '@' . realpath($image_full_path);
    }
    $data = array('image' => $cFile);

감사합니다. 바로 해결이 되네요.

1개의 좋아요