2017-05-18 5 views
0

libcurlを使用して私のRubyサーバにwavファイルを送信しようとしています。ここは、コードの主なスニペットだ、マルチフォームポストです:Libcurlがオーディオファイルを送信する

 curl_easy_setopt(curl, CURLOPT_URL, "192.168.0.136:3000/upload"); 

     struct curl_httppost *post = NULL; 
     struct curl_httppost *last = NULL; 

     //Added longer timeout in case of large files 
     //Two forms, one for file and another for data 
     curl_formadd(&post, &last, CURLFORM_COPYNAME, "file", CURLFORM_FILECONTENT, "log1.wav", CURLFORM_END); 
     curl_formadd(&post, &last, CURLFORM_COPYNAME, "data", CURLFORM_PTRCONTENTS, data, CURLFORM_END); 
     curl_easy_setopt(curl, CURLOPT_HTTPPOST, post); 

     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 
     curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&respons_buf); 
     res = curl_easy_perform(curl); 

私は私が何をすべきかわからないという、エンコードされたテキストとしてファイルを受信します。これは私がテキストファイルを送ったのと同じ方法です。ヘッダー情報がありませんか?

答えて

0

libcurlは、マルチパートフォームの投稿を送信するときに、データを何らかの方法でエンコードまたは変換しません。これは、ディスク上のファイルから読み取った正確なバイト数を送信します。

サーバーの最後に全く同じデータが届かない場合、サーバーソフトウェアはおそらくあなたのためにいくつかの魔法を実行しました。可能性としては、投稿のその特定のセクションの存在しないContent-Type:ヘッダーに基づいています。 CURLFORM_CONTENTTYPEとそのファイルのタイプを追加することができます。

関連する問題