HTMLから受け取った画像データAを解析中のapiにpostする処理をしています。
apiに送る画像データはエンコードタイプがmultipartです。
charlesを使用して解析しているapiのpost結果を見てみると
Content-Disposition: form-data; name="photo_1"; filename="photo_1.jpg" Content-Type: image/jpeg ~~~~以下データ内容~~~~~~~~~~~~~~~~~~~~~~~
となっています。
そこで
PHP
1// (main)---------------------------------------------- 2$headers = array( 3"Content-Type: multipart/form-data", 4 ); 5$data = array( 6'photo_1' => base64_encode(file_get_contents($upload_img)) 7 ); 8$result = PostCURL(’https://example.api.com/v1/upload?_access_token=XXXXXXXX’, $data, $headers); 9 10// (postcurl)------------------------------------------ 11function PostCURL($URL,$data,$headers){ 12 $ch = curl_init(); 13 14 curl_setopt($ch, CURLOPT_URL,$URL); 15 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 16 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 17 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 18 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 19 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 20 curl_setopt($ch, CURLOPT_USERAGENT,$USER_AGENT); 21 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 22 curl_setopt($ch, CURLOPT_VERBOSE, true); 23 24 $response = curl_exec($ch); 25 $result = json_decode($response, true); 26 $errno = curl_errno($ch); 27 $error = curl_error($ch); 28 curl_close($ch); 29 30 return $result; 31}
と組んだのですが写真が正常にアップロードされませんでしたと返ってきます。
たぶん'photo_1' => base64_encode(file_get_contents($upload_img))の部分が引っかかっているように思えます。(file_get_contentsを使うと画像がmultipartじゃなくなるような気がする)
以上ご教授お願いします。
<追記>
apiのurlは
https://api.axluse.com/v1/jp/
です。
ロジックは画像のデーモンファイルとやらをapiで自動生成してくれるものです。
回答2件
あなたの回答
tips
プレビュー