• 締切済み

VC++でHTTPプロトコルを用いたファイルダウンロード

サーバー上にあるファイルを要求クライアント上にダウンロードしたいのですが、どのようにすればいいのかわかりません。WinInetクラスを用いればいいということはわかるのですが、サーバー(http://***.***.***/~)のファイル(***)をダウンロードするという具体的なロジックが、知識不足からか組むことができません。 どなたかご教授ねがえませんでしょうか?よろしくお願い致します。

みんなの回答

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.2

いくつか質問から...  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();

yomogikun
質問者

補足

早速の回答ありがとうございました!! 回答内容を参考にやってみます。 補足ですが、 使用ツールはVC6.0 対応OSは9Xシリーズ・2000・Meです。 buffにファイルデータを格納した後、クライアントの指定フォルダの中に保存するにはどのようにすればよろしいのでしょうか? さらにさらに、 ダウンロード中によく表示される進行状況をあらわすバーはどのように組めばよろしいのでしょうか? 初心者という事をいいことに質問ばかりしてしまい、申し訳ありません。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

APIを使うだけで十分かと思います。サンプルは山のように転がって いますが、そのうちのひとつを参考URLに紹介します。

参考URL:
http://tokyo.cool.ne.jp/masapico/api_InternetOpen.html

関連するQ&A

  • HTTPで返されるファイル名の取得について

    こんにちは。 現在、VBで、WEBからファイルをダウンロードするプログラムを作成しています。 ダウンロードしたいファイルのURLを指定し、wininetのInternetReadFileで読み込んでいるのですが、下記 http://www.hoge.com/index.php?id=1234 のように、phpやaspからファイル名を返されるようなURLの場合、どうやって返されるファイル名を取得するのでしょうか? (wininetのHttpQueryInfoでは、ファイル名は取得できないようなのですが...)

  • HTTPでダウンロード

    一部のファイアウォールや、プロキシサーバー、ISDN/ブロードバンドルータでダウンロードボタンからのダウンロードが失敗するので、「HTTPでダウンロード」ができるらしいですけど、具体的なやり方をおしえてください。

  • XMLファイルのダウンロード

    こんばんは~ もしご存知でしたら教えていただきたいことがあります。 XMLファイルがサーバにあるとして、それってローカル(クライアント)に普通にダウンロードってできるものなんでしょうか??? JavaのServletを使って実装しているんですけど、javaファイルやCSVファイルのダウンロードはできるのにXMLファイルのダウンロードができません。 普通は保存とかキャンセルとかのボタンを押せるダイアログが出ますよね? でもXMLファイルだけはWEBブラウザに「XMLを表示できません」とでます。 XMLファイルってサーバーからクライアントにそのままダウンロードできないものなんですか??? 意味不明な点は補足させていただきますので、宜しくお願いします。

    • ベストアンサー
    • XML
  • ファイルのダウンロード

    お世話になっております。 ファイルをダウンロードしようとすると、ファイルのダウンロードのダイアログが表示されたままIEがフリーズしていしまいます。 ・違うユーザーでログインすれば問題なくダウンロードできる。 ・CSVファイルの場合、一度開いてからなら保存が出来た。 ・最近ファイルサーバが変更しました。割り当てられていたドライブや、マイネットワークに表示されていた古いサーバは削除しました。 ・IEの一時ファイルは削除しました。レジストリも削除しました。 自分でも調べてみましたが、私の知識では限界のようなので、誰かご存知の方がいらっしゃったら教えてください。 宜しくお願い致します。

  • HTTPでファイル転送させるには?

    質問1 HTTPでのファイル転送 以下のようなことを考えています。 1)多数のクライアントから、サーバに対してテキストファイルをある周期で転送します。 2)クライアントには固定IPアドレスが割り振られています。 3)クライアントはWindows2000/XPです。 4)サーバはWindowsServer2003かUNIX(メーカ未定)を導入予定です。 5)クライアントとサーバの間にはセグメント越えが必要な場合があり、HTTPのみ利用可能です。 6)ファイル転送のソフト(もしくはコマンド)はクライアント側にあり、クライアントからサーバにファイルをPUSHします。(サーバからPULLするのではありません) こういった上記の要件の場合、HTTPでテキストファイルをサーバに転送させることは可能でしょうか? 質問2 ファイル転送の結果を検証する ファイル転送後に、確実に送信できたかどうかを知る方法を教えてください。FTPだと、ファイルリスト、ファイルサイズ、タイムスタンプなどを確認してチェックするという方法が思いつくのですが、HTTPの場合はどうなんでしょうか? 以上、2つの質問に対して、可能であるならば、 ・こういうコマンドを利用すればよいよ ・こういう関数があるよ ・こういうソフトがあるよ など、どんなささいな情報でも結構ですので、情報をいただけると大変幸いです。

  • ファイル内容を比較する方法

    サーバ側とクライアント側の2つのファイル保存フォルダの中を比較して、クライアント側に不足しているファイルをサーバからダウンロードするというプログラムを作成しています。 現時点では、両方のフォルダのパスを指定して、FileクラスのlistFilesによってフォルダ内の一覧情報を取得し、それぞれのフォルダ内のファイル名を比較して一致しない場合はそれをダウンロードするという方法で不足しているファイルを取得することができています。 しかし、ファイル内容が異なっているのにファイル名が同じであるときにそれをダウンロードできないという問題がでてきて困っています。もしファイル内容まで一致しているかどうか比較できる方法があったら教えてほしいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • HTTPダウンロード後に自動削除

    サーバーに置いたファイルをHTTPダウンロードした後に、自動的にサーバーのファイルを削除することは可能でしょうか。 サーバーの容量節約のためにPHPで実現できないか悩んでいます。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • CSVファイルのダウンロードができたりできなかったり・・

    ASPで、サーバー側で動的に作成したCSVファイルをクライアント側にダウンロードさせたいと思っていますが、 ダウンロードできるときとできないときがあり困っています。 「ファイルのダウンロード」ダイアログが表示され、うまくダウンロードできるときと、 「Internet Explorer では、[サイト名]-[aspファイル名]をダウンロードできません。このインターネットのサイトを開くことができませんでした。要求されたサイトがしようできないか、見つけることができません。後でやり直してください。」のメッセージが表示され、ダウンロードできない場合があります。 どちらもサーバー上にダウンロードすべきCSVファイルは作成されているので、ダウンロード部分に問題があると思うのですが、原因がわかりません。 ひとつ気づいたのが、csvファイルの容量が4.0MBを超えるとダウンロードできないような気がするのですが、関係ありますでしょうか? よろしくお願い致します。 --------出力のためのスクリプト----------------- Response.ContentType = "application/octet-stream" Response.AddHeader "Content-Disposition", "attachment; filename = " & CSVファイル名 Set fs = Server.CreateObject("Scripting.FileSystemObject") CSV_DATA = Server.MapPath(CSVファイル名) If fs.FileExists(CSV_DATA) Then Set ts = fs.OpenTextFile(CSV_DATA, 1) Do Until ts.AtEndOfStream Response.Write ts.ReadLine() & vbCrLf Loop ts.Close End If Response.End -----------------------------------------------

  • ファイルのダウンロードが始まってしまう

    ブラウザで自分の作成したPHPファイルを指定して表示させようとすると、 その指定したPHPファイルをダウンロードしようとしてしまいます。 サーバーのOSはWinXP クライアントのOSもWinXP webサーバーはapache2.50 ブラウザはIE6 です。 どなたか理由が分かる方いらっしゃいませんでしょうか。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • ファイルのダウンロードについて

    サーバーにあるテキストファイルを、クライアント側で受信することはできますか? ダイアログは表示したくありません。 サーバーはIISで、クライアントは最新モバイル(IOS,Android)です。 ご存じでしたら、回答よろしくお願い致します。 ※何がしたいかと言いますと、クライアント側にデータを溜めておきたいのです。   WebStorageは容量が小さいですし、IndexedDBはSafariが対応してないですしで    困っています。

専門家に質問してみよう