質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

359閲覧

laravel5.5でAIメーカーのAPIを利用したいが、Array ( [state] => 0 [messages] => Array ( [0] => 不正な画像ファイルです。 ) )と表示

katahaba

総合スコア15

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/11/09 06:07

https://aimaker.io/app/image-classification/id/5629の下の方にあるAPIを使う! にある通り laravel5.5から利用したいのですが、print_r($response);の表示はArray ( [state] => 0 [messages] => Array ( [0] => 不正な画像ファイルです。 ) )となります。
写真をアップして利用するアプリです。アップしたものをAIメーカーのAPIに送って猫かどうかを判定させたいです。

php

1 public function store(Request $request) 2 { 3 $validator = Validator::make($request->all(),[ 4 'photo' => 'required|image|max:5120', 5 ]); 6 7 if ($validator->fails()){ 8 return back()->withErrors($validator)->withInput(); 9 } 10 11 //apiに写真をアップし猫かどうかの判定、猫でなければもう一度アップ画面に遷移、猫なら保存 12 $ch = curl_init(); 13 curl_setopt_array($ch, [ 14 CURLOPT_URL => "https://aimaker.io/image/classification/api", 15 CURLOPT_POST => true, 16 CURLOPT_POSTFIELDS => [ 17 'id' => 5629, 18 'apikey' => "c28f3694803e7631c5feb0831f29be77a0a03197bec8f9d55204f77db57bd7dfb3a10fa3f7d3b0ddf229f1d62a648243", 19 // 'file' => new \CURLFile(public_path('cat.jpg')), 20 'file' => new \CURLFile($_FILES["photo"]["tmp_name"]), 21 ], 22 CURLOPT_HTTPHEADER => ['Content-Type:multipart/form-data'], 23 CURLOPT_SSL_VERIFYPEER => false, 24 CURLOPT_RETURNTRANSFER => true, 25 ]); 26 27 $result = curl_exec($ch); 28 $response = json_decode($result, true); 29 print_r($response); 30 curl_close($ch); 31 dd($ch); 32 つづく

試したこと

'file' => new \CURLFile(public_path('cat.jpg')),

でcloud9のIDEのpublicフォルダの写真をAPIにPOSTすると以下のようなレスポンスが返ってきました。うまくいっているようです。

Array ( [url] => https://aimaker.io/uptmp/e77445bcc825dc0389448c0c83d47f4ea582ac36.jpg [labels] => Array ( [0] => Array ( [score] => 1 [label] => 猫 ) [1] => Array ( [score] => 0 [label] => 犬 ) ) [state] => 1 )

'file' => new \CURLFile($_FILES["photo"]["tmp_name"]),

のように自分のアプリからアップロードした物をPOSTすると下記のように不正な画像と言われます。

Array ( [state] => 0 [messages] => Array ( [0] => 不正な画像ファイルです。 ) )

どうやったら解決できそうでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

'file' => new \CURLFile($_FILES["photo"]["tmp_name"], $_FILES["photo"]["type"], $_FILES["photo"]["name"]),
にしたらできました。

投稿2020/11/09 06:51

katahaba

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問