流れるまにまに

流れるまにまに

やったこととかのメモ。

【C++】HTTP通信で大きいサイズのファイルを分割して送る

HTTP通信で大きいサイズのファイルを分割してPOSTする方法。

普通にPOSTする分には問題なかったのだけど、

送信したいファイルの内容を一度メモリに展開してから送る!ってやってたら、

700MBくらいですっ飛んだので、修正。

巨大サイズのファイルを扱う時っていつも注意が必要ですね。

 

WinHttpSendRequestで送るサイズを先に指定すれば、WinHttpWriteDataで分割して送信できるんだなぁ。

でも、サイズ指定部分がbyte数をDWORD型なので、

4GB(4,294,967,295byte)が限界!!

GB超えるファイルをHttpで送らないでと言いたい...(´・ω・`)

 

APIも色んな手順で使えるんだと知りました。ここの図が凄い分かり易かった!

WinHTTP Sessions Overview (Windows)

 

サンプルコードは以下。

CString系を多用しているのは好みと技術力の問題です。

エラー処理とか、解放漏れとかは無視して下さい。

 

 

基本的にはここを参考にさせていただきました。

http://eternalwindows.jp/network/winhttp/winhttp02.html