読者です 読者をやめる 読者になる 読者になる

Ba.とWEBと梅干し太郎

WEB制作・プログラミング・音楽の学習したこと・つくったもののアウトプットブログです。あとは日記。

php5.4のcurl_setoptでmultipart送信できない人へ

オプションの指定の順番が悪いかも。

私の場合、multipartになるはずなのに、application/x-www-form-urlencodedになっていた。
ファイル送りたいのに文字列送信てぇえ

curl_setopt php PHP: curl_setopt - Manual

▼これはmultipartになる。

curl_setopt_array($this->_curl, array(
            CURLOPT_URL => 'http://hogehoge/fugafuga/',
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $data,
            CURLINFO_HEADER_OUT => true
            ));

▼これはapplication/x-www-form-urlencodedになる。

curl_setopt_array($this->_curl, array(
            CURLOPT_URL => 'http://hogehoge/fugafuga/',
            CURLOPT_POSTFIELDS => $data,
            CURLOPT_POST => true,
            CURLINFO_HEADER_OUT => true
            ));

何が違うかと言うと、CURLOPT_POST の後に CURLOPT_POSTFIELDS を指定しているか否か。

原因は分かりませんが、POST送信だよ、って指定の前に値を渡しているので、上から解釈していくと間違えるのもまあ納得。
エラー解消に付き合ってくれた、まみゅりんありがとう。

静的な値は先に指定すべきですな。
良い勉強になりました。