- 締切済み
VC++でHTTPプロトコルを用いたファイルダウンロード
サーバー上にあるファイルを要求クライアント上にダウンロードしたいのですが、どのようにすればいいのかわかりません。WinInetクラスを用いればいいということはわかるのですが、サーバー(http://***.***.***/~)のファイル(***)をダウンロードするという具体的なロジックが、知識不足からか組むことができません。 どなたかご教授ねがえませんでしょうか?よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mnabe
- ベストアンサー率33% (427/1283)
いくつか質問から... WININETクラスを使用するって事は、VC6.0でいいのかな? 動作させたいOSは? IE4.0以降が必須になるけど問題ない? どの当りが解らないの? ロジックもないもないと思うけど...ヘルプに例から全部載っていますが...それでは不足なのでしょうか VCのヘルプで、『インターネットのプログラミング : WinInet』で検索すると出て来ます。 以下、サンプルソース抜粋 ----------- //assumes server, port and URL names have been initialized CInternetSession session("My Session"); CHttpConnection* pServer = NULL; CHttpFile* pFile = NULL; try{ CString strServerName; INTERNET_PORT nPort; pServer = session.GetHttpConnection(strServerName, nPort); pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject); pFile->AddRequestHeaders(szHeaders); pFile->SendRequest(); pFile->QueryInfoStatusCode(dwRet); if (dwRet == HTTP_STATUS_OK) { UINT nRead = pFile->Read(szBuff, 1023); while (nRead > 0){ //read file... } } delete pFile; delete pServer; } catch (CInternetException* pEx){ //catch errors from WinInet } session.Close();
- a-kuma
- ベストアンサー率50% (1122/2211)
APIを使うだけで十分かと思います。サンプルは山のように転がって いますが、そのうちのひとつを参考URLに紹介します。
補足
早速の回答ありがとうございました!! 回答内容を参考にやってみます。 補足ですが、 使用ツールはVC6.0 対応OSは9Xシリーズ・2000・Meです。 buffにファイルデータを格納した後、クライアントの指定フォルダの中に保存するにはどのようにすればよろしいのでしょうか? さらにさらに、 ダウンロード中によく表示される進行状況をあらわすバーはどのように組めばよろしいのでしょうか? 初心者という事をいいことに質問ばかりしてしまい、申し訳ありません。