6

libcurlで単純なHTTPPOSTリクエストを使用してファイルをアップロードするCアプリケーションをコーディングしています。1つのファイルで実行できますが、複数のファイルをアップロードする方法がわかりません。同じコードの別のメソッドを使用してみましたが、役に立ちませんでした。HTTPPOSTのコードは次のとおりです。

void sendHashes()
{
    struct curl_httppost *post = NULL;
    struct curl_httppost *last = NULL;
    CURL *curlhash;
    CURLcode response;

    curlhash = curl_easy_init();
    curl_easy_setopt(curlhash, CURLOPT_URL, URL);

    curl_formadd(&post, &last,
        CURLFORM_COPYNAME, "Hash",
        CURLFORM_FILECONTENT, "C:\\file.txt", 
        CURLFORM_END
    );

    curl_easy_setopt(curlhash, CURLOPT_HTTPPOST, post);

    response = curl_easy_perform(curlhash);
    curl_formfree(post);
    curl_easy_cleanup(curlhash);
}
4

1 に答える 1

5

docs/examples/postit2.cサンプル コードで示されているように、またドキュメント[1] で述べられているようcurl_formaddに、アップロードするファイルごとに次のように呼び出すだけです。

curl_formadd(&post,
             &last,
             CURLFORM_COPYNAME, "Foo",
             CURLFORM_FILE, "foo.txt",
             CURLFORM_END);

curl_formadd(&post,
             &last,
             CURLFORM_COPYNAME, "Bar",
             CURLFORM_FILE, "bar.txt",
             CURLFORM_END);

/* ... */

そのファイルが読み取られ、その内容がこの部分のデータとして使用される代わりCURLFORM_FILEに、オプションを使用したことに注意してください。ドキュメント [1] を確認して、適切なオプションを使用してください。CURLFORM_FILECONTENT

プロのヒント: httpbinechohttpなどのデバッグ サービスを使用して、コードを簡単にテストできます。

[1]

CURLFORM_FILE の場合、ユーザーは、複数の CURLFORM_FILE 引数にファイル名を続けて指定することにより、1 つまたは複数のファイルを 1 つの部分として送信できます。

于 2012-10-24T08:44:19.833 に答える