dポイントプレゼントキャンペーン実施中!

MFCで、FTPクライアントを作成しています。

ファイルのアップロードは出来たのですが、属性変更の仕方が分からず
困っています。

どなたか、ご教授ください。
よろしくお願いします。

環境:WinXP+VC6

A 回答 (2件)

No.1の方が提示してらっしゃるように、CFtpConnection::Command()メソッドあるいはWin32のFtpCommand()関数を使って、コマンド文字列を直接送信するしかないと思います。


ただ、VC 6.0のMFCはCFtpConnection::Command()をサポートしていなくて、標準付属のPlatform SDKもFtpCommand()を含んでいない、とかいう話なので、VC 6.0用の最終版であるPlatform SDK Feb 2003を入手してインストールするか、下記のようにLoadLibrary()でwininet.dllから直接関数ポインタを取得して実行するか、あるいは最新版のVC++に移行するか、のいずれかだと思います。


#include <tchar.h>
#include <Windows.h>
#include <atlbase.h>
#include <WinInet.h>

BOOL FtpCommandA_DirectLoad(
HINTERNET hConnect,
BOOL fExpectResponse,
DWORD dwFlags,
LPCSTR lpszCommand,
DWORD_PTR dwContext,
HINTERNET* phFtpCommand
)
{
BOOL ret = FALSE;
LPCTSTR pModuleFName = _T("Wininet.dll");
HMODULE hDll = ::LoadLibrary(pModuleFName);
if (hDll)
{
typedef BOOL (WINAPI *TFuncPtrFtpCommandA)(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*);

LPCSTR pFuncName = "FtpCommandA";
TFuncPtrFtpCommandA pFtpCommandA = reinterpret_cast<TFuncPtrFtpCommandA>(::GetProcAddress(hDll, pFuncName));
if(pFtpCommandA)
{
ret = pFtpCommandA(hConnect, fExpectResponse, dwFlags, lpszCommand, dwContext, phFtpCommand);
}
else
{
ATLTRACE("Failed to get the address of the function \'%s\'.\n", pFuncName);
}
::FreeLibrary(hDll);
hDll = NULL;
}
else
{
ATLTRACE(_T("Failed to load \'%s\'.\n"), pModuleFName);
}

return ret;
}

としておいて、

{
CFtpConnection ftpConnection;

// ここで FTP 接続処理。

BOOL ret = ::FtpCommandA_DirectLoad(ftpConnection, FALSE, FTP_TRANSFER_TYPE_BINARY, "site chmod 755 target.bin", NULL, NULL);
// あるいは
BOOL ret = ::FtpCommandA_DirectLoad(ftpConnection, FALSE, FTP_TRANSFER_TYPE_BINARY, "quote site chmod 755 target.bin", NULL, NULL);
}

のようにコールする。


http://msdn.microsoft.com/ja-jp/library/4tw7dfy6 …
http://msdn.microsoft.com/en-us/library/aa384133 …
http://q.hatena.ne.jp/1125986373
    • good
    • 0
この回答へのお礼

今回は、VC6→VC7にすることで解決しました。

勉強になりました。
ありがとうございました。

お礼日時:2011/02/14 16:51

詳しくは示せませんが…



SITE CHMOD 755 filename のようにコマンドを投げるしかないんじゃないでしょうか。quote が要ったかも…

MFC では直接そこまでサポートされてないですが、Microsoft の情報にコマンドを投げる例があったような。

参考URL:http://www.tohoho-web.com/wwwxx012.htm
    • good
    • 0
この回答へのお礼

解決しました。

ありがとうございました。

お礼日時:2011/02/14 16:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!