5

C++ で書かれたプログラムを介して画像を送信したいと考えています。- OK 動作しますが、プリロードされたキャリアから変数 char に画像を送信したいと思います (つまり、最初に、画像を変数にロードしてから変数を送信します)。ディスク上の画像のパスを指定します。

このプログラムは、exe ではなく、curl ライブラリを使用して C++ で記述したいと考えていました。拡大。私はそのようなプログラムも見つけました(私が少し修正しました)

4

2 に答える 2

11

ここでの CURLFORM_PTRCONTENTS は正しい使い方ではありません。ファイル アップロード パーツを作成しません。

代わりに、 CURLFORM_BUFFERを使用して、メモリ内の既存のバッファから画像を送信する必要があります。

 curl_formadd(&formpost,
          &lastptr,
          CURLFORM_COPYNAME, "send",
          CURLFORM_BUFFER, "nowy.jpg",
          CURLFORM_BUFFERPTR, data,
          CURLFORM_BUFFERLENGTH, size,
          CURLFORM_END);
于 2010-06-11T20:21:05.223 に答える
2

のドキュメントを読む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思いますか、それとも説明が必要ですか?

于 2010-03-27T13:17:14.077 に答える