C++ で書かれたプログラムを介して画像を送信したいと考えています。- OK 動作しますが、プリロードされたキャリアから変数 char に画像を送信したいと思います (つまり、最初に、画像を変数にロードしてから変数を送信します)。ディスク上の画像のパスを指定します。
このプログラムは、exe ではなく、curl ライブラリを使用して C++ で記述したいと考えていました。拡大。私はそのようなプログラムも見つけました(私が少し修正しました)
ここでの CURLFORM_PTRCONTENTS は正しい使い方ではありません。ファイル アップロード パーツを作成しません。
代わりに、 CURLFORM_BUFFERを使用して、メモリ内の既存のバッファから画像を送信する必要があります。
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "send",
CURLFORM_BUFFER, "nowy.jpg",
CURLFORM_BUFFERPTR, data,
CURLFORM_BUFFERLENGTH, size,
CURLFORM_END);
のドキュメントを読むcurl_formadd
: http://curl.haxx.se/libcurl/c/curl_formadd.html
具体的には、「オプション」の下で:
CURLFORM_PTRCONTENTS
その後に、この部分の内容へのポインタ、送信する実際のデータが続きます。libcurl はポインターを使用してアプリケーション内のデータを参照するため、curl が不要になるまでポインターが残っていることを確認する必要があります。データが NUL で終了していない場合、またはデータに 0 バイトを含めたい場合は、CURLFORM_CONTENTSLENGTH でその長さを設定する必要があります。
CURLFORM_CONTENTSLENGTH
内容の長さを示す long が続きます。CURLFORM_STREAM コンテンツの場合、このオプションは必須であることに注意してください。
だから代わりに
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "send",
CURLFORM_FILE, "nowy.jpg",
CURLFORM_END);
あなたは次のようなものが欲しいでしょう
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "send",
CURLFORM_PTRCONTENTS, p_jpg_data,
CURLFORM_CONTENTSLENGTH, jpg_data_len,
CURLFORM_END);
データを作成してそこに読み込む方法を知っているとp_jpg_data
思いますか、それとも説明が必要ですか?