マルチパート POST リクエストを使用して大きなファイル (>2 GB) をアップロードする必要があります。ソース ファイルには、Unicode 記号を使用して名前を付けることができます。問題は、libcurl が Windows で Unicode wfopen をサポートしていないため、通常の方法ではこのタスクを完了できないことです。
curl_formadd(&formpost, &lastptr,
CURLFORM_COPYNAME, fieldname,
CURLFORM_FILENAME, filename,
CURLFORM_FILE, full_path_to_file,
CURLFORM_CONTENTTYPE, "application/octet-stream",
CURLFORM_END);
curl_formadd の CURLFORM_STREAM オプションを CURLOPT_READFUNCTION と組み合わせて使用できることがわかりました。ここで、CURLFORM_CONTENTSLENGTH オプションを使用してファイル サイズを手動で設定する必要がありますが、「long long」ファイル サイズを設定する必要がある場合、パラメーターとして「long」のみを受け入れます。curl マニュアルを調べたところ、 CURLOPT_POSTFIELDSIZE_LARGE オプションが見つかりましたが、私の場合は何もしません。マルチパート リクエスト システムはこのパラメータを無視しているようです。Unicode 名や大きなファイルのサポートをあきらめたくありません。