前提
クライアント:C++(linux)
サーバ:apache php
実現したいこと
連想配列を送れているのですが、このコードに追記するかたちで同時に画像データもPOSTしたいです。
また別で、curlを使わずに画像をpostしてサーバ側で受け取り任意の名前でファイル保存することはできています。
もちろん$_FILESを出力してみると、name,type,tmp_name,error,sizeが表示されています。
その際サイトは以下の下のほうにある"C言語でPOSTしてバイナリデータをアップロード"という記事を参考にしました
http://sdlabo.org/index.php
ソースコード
main.cpp
size_t getSize(char *ptr, size_t size, size_t mem, string *stream) { int si = size * mem; stream->append(ptr, si); return si; } int main(int argc, char *argv[]) { CURL *curl; CURLcode res; string chunk; curl = curl_easy_init(); if(curl) { struct curl_slist *_headers = NULL; _headers = curl_slist_append(_headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_URL, "http://xxx.xxx.xxx.xxx/xxx/xxx.php"); curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); //postdataは{"a":"b"}のような連想配列のjson文字列 curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(postdata)); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, getSize); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (string *)&chunk); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } return 0; }
これでphp側でリクエストデータを確認すると、{"a":"b"}のように出力ができている状態です。
{ "a" : "b" }
今のCurlを使ったソースに画像データも追加してサーバ側で以下のように受け取れるようにしたいです。
{ "a" : "b", "image": [ { "name": "xxxxx", "type" "xxxxx":, tmp_name : "C:\Windows\Temp\xxx.tmp", "error": "0" "size": "100" } ] }
0 コメント