« [VC6] リソースファイル(.rc)から外部リソースファイルのインクルード | トップページ | [VC6] メッセージボックスの[×]ボタンを使用不可にする »

2008年6月13日 (金)

[VC6] 指定URLのファイルダウンロード

VC6環境で、ネット経由で指定URLのファイルをダウンロードする必要がでてきたので、CInternetSessionを利用して、とりあえず土台をを作ってみた。
#include <afxinet.h>

bool FileDownload(LPCTSTR pszURL, LPCTSTR pszSaveFilePath)
{
  bool             bRslt = false;
  CFile*           pNetFile = NULL;
  CInternetSession is;
  try{
    // URLを開く
    pNetFile = is.OpenURL(pszURL);
    if(pNetFile == NULL)
      return bRslt;
    // ファイル保存
    CFile saveFile(pszSaveFilePath, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyNone);
    BYTE  szBuff[1024];
    int   nReadBytes;
    while(0 < (nReadBytes = pNetFile->Read(szBuff, 1024)))
      saveFile.Write(szBuff, nReadBytes);
    saveFile.Close();
    bRslt = true;
  }
  catch(CException* pEx){
    pEx->ReportError();
    pEx->Delete();
  }
  // 後処理
  if(pNetFile != NULL)
    pNetFile->Close();
  delete pNetFile;

  return bRslt;
}
理想としては、#include を追加し、std::autoptrを使用してスッキリさせたかったのだが、コンパイル環境の都合上ここでは使わないこととした。
CFile->Close();もデストラクタで自動的に呼ばれるけれど、念のため。
あとは、pNetFile->GetLength();でダウンロードするサイズが分かるので、関数引数なりを追加すれば、プログレス表示にも対応しやすいかな。

|

« [VC6] リソースファイル(.rc)から外部リソースファイルのインクルード | トップページ | [VC6] メッセージボックスの[×]ボタンを使用不可にする »

プログラミング(VC6)」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: [VC6] 指定URLのファイルダウンロード:

« [VC6] リソースファイル(.rc)から外部リソースファイルのインクルード | トップページ | [VC6] メッセージボックスの[×]ボタンを使用不可にする »