ENGLISH page is here.
GET DinopSearchBar
サイト内検索:
HOME
VC++ TIPS
ダウンロード
DinopExifReader
DinopSearchBar
DinopSearchBar mini
DinopTabbingBar
for Firefox
大阪湾の生き物
甲子園浜の自然
甲子園浜の干潟
甲子園浜の水中
甲子園浜の野鳥
近畿の山々
植物図鑑
箕面マップ
水中機材
カメラ
ランキング
望遠鏡の世界
顕微鏡の世界
Googleのすべて
GoogleマップAPI
ニュース
読んだ本
日記
変な料理の作り方
遺伝子操作
論文紹介
デイトレード
自動売買でFX
ネットで小遣い稼ぎ
Solaris
電子工作
その他
問い合わせ
VC++用コード集
大阪湾の生き物
水中用機材
since:2000/11/15
dinopcom@gmail.com
www.dinop.comは
だいのっぷ・どっと・こむ
と読んでください。







« Windowsサービスの作成 | メイン | CD-ROMのイジェクト(Win9x) »

FTPによるアップロード/ダウンロード(wininet.dll)




解説


 Wininet.dllを利用してFTPサーバーからファイルを取得したり、ファイルをアップロード する方法。
 (ブロッキング動作であれば)InternetOpen、InternetConnect、FtpGetFileやFtpPutFile というAPIを利用することで簡単にできてしまう。



ソースコード


 PC内のboot.iniファイルをアップロードし、アップロードしたファイルを名前を変えてダウンロード する。

※ソースコード内のログイン名やパスワードは有効な値ではありません。適宜変更してください。

#include "wininet.h"
#pragma	comment(lib,"wininet.lib")

bool	EasyGetFile(LPCTSTR pszRemoteFile,LPCTSTR pszLocalFile,LPCTSTR pszServer,LPCTSTR pszUserID,LPCTSTR pszPassword);
bool	EasyPutFile(LPCTSTR pszLocalFile,LPCTSTR pszRemoteFile,LPCTSTR pszServer,LPCTSTR pszUserID,LPCTSTR pszPassword);

bool	Test()
{
	bool	ret;

	ret = EasyPutFile(_T("c:\\boot.ini"),_T("/home/issei/htdocs/boot.ini"),_T("www.xxx.com"),_T("admin54"),_T("784b20nkdfa"));
	if(ret)
		EasyGetFile(_T("/home/issei/htdocs/boot.ini"),_T("c:\\boot2.ini"),_T("www.xxx.com"),_T("admin54"),_T("784b20nkdfa"));

	return	ret;
}


//
//	FTPによるファイルの簡易ダウンロード
//
//	ブロッキング動作!
//
//	pszRemoteFile	: サーバー側のファイルパスを指定。ex."/htdocs/index.html"
//	pszLocalFile	: ローカル側のファイルパスを指定。ex."c:\\index.html"
//	pszServer		: FTPサーバー名。ex."www.dinop.com"
//	pszUserID		: サーバーへのログインID。ex."issei"
//	pszPassword		: パスワード。ex."4hk48gf1dfs"
//
bool	EasyGetFile(LPCTSTR pszRemoteFile,LPCTSTR pszLocalFile,LPCTSTR pszServer,LPCTSTR pszUserID,LPCTSTR pszPassword)
{
	BOOL		ret;
	HINTERNET	hInternet;
	HINTERNET	hFtp;

	hInternet	= NULL;
	hFtp		= NULL;
	ret			= FALSE;

	hInternet = ::InternetOpen(NULL,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
	if(hInternet)
		hFtp = ::InternetConnect(hInternet,pszServer,INTERNET_DEFAULT_FTP_PORT,pszUserID,pszPassword,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
	if(hFtp)
		ret = ::FtpGetFile(hFtp,pszRemoteFile,pszLocalFile,TRUE,0,FTP_TRANSFER_TYPE_BINARY,0);
	if(hFtp)
		::InternetCloseHandle(hFtp);
	if(hInternet)
		::InternetCloseHandle(hInternet);

	ATLASSERT(ret);
	return	ret ? true : false;
}


//
//	FTPによるファイルの簡易アップロード
//
//	ブロッキング動作!
//
//	pszLocalFile	: ローカル側のファイルパスを指定。ex."c:\\index.html"
//	pszRemoteFile	: サーバー側のファイルパスを指定。ex."/htdocs/index.html"
//	pszServer		: FTPサーバー名。ex."www.dinop.com"
//	pszUserID		: サーバーへのログインID。ex."issei"
//	pszPassword		: パスワード。ex."4hk48gf1dfs"
//
bool	EasyPutFile(LPCTSTR pszLocalFile,LPCTSTR pszRemoteFile,LPCTSTR pszServer,LPCTSTR pszUserID,LPCTSTR pszPassword)
{
	BOOL		ret;
	HINTERNET	hInternet;
	HINTERNET	hFtp;

	hInternet	= NULL;
	hFtp		= NULL;
	ret			= FALSE;

	hInternet = ::InternetOpen(NULL,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
	if(hInternet)
		hFtp = ::InternetConnect(hInternet,pszServer,INTERNET_DEFAULT_FTP_PORT,pszUserID,pszPassword,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
	if(hFtp)
		ret = ::FtpPutFile(hFtp,pszLocalFile,pszRemoteFile,FTP_TRANSFER_TYPE_BINARY,0);
	if(hFtp)
		::InternetCloseHandle(hFtp);
	if(hInternet)
		::InternetCloseHandle(hInternet);

	ATLASSERT(ret);
	return	ret ? true : false;
}









Copyright (c) 1999-2007 issei. All rights reserved. (運営者情報