• ベストアンサー

MFCで、FTPファイルの属性変更

MFCで、FTPクライアントを作成しています。 ファイルのアップロードは出来たのですが、属性変更の仕方が分からず 困っています。 どなたか、ご教授ください。 よろしくお願いします。 環境:WinXP+VC6

質問者が選んだベストアンサー

  • ベストアンサー
  • sygh
  • ベストアンサー率76% (42/55)
回答No.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.aspx http://msdn.microsoft.com/en-us/library/aa384133.aspx http://q.hatena.ne.jp/1125986373

w0a15455
質問者

お礼

今回は、VC6→VC7にすることで解決しました。 勉強になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • davidfox
  • ベストアンサー率58% (21/36)
回答No.1

詳しくは示せませんが… SITE CHMOD 755 filename のようにコマンドを投げるしかないんじゃないでしょうか。quote が要ったかも… MFC では直接そこまでサポートされてないですが、Microsoft の情報にコマンドを投げる例があったような。

参考URL:
http://www.tohoho-web.com/wwwxx012.htm
w0a15455
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • FFFTPで属性変更できない(FedraCore2&ProFTPD)

    FedraCore2にアパッチを立ててwebサーバとして使用しているのですが、クライアントからFFFTPを使用してファイルをアップロードした後、FFFTPでサーバ上のファイルの属性変更を行っても変更がされません。FTPサーバはProFTPDを使用しています。 属性変更コマンドは、SITE CHMODになっていますが、コマンド自体に違いがあったりするのでしょうか? また、アップロード済みのファイルを上書きでアップロードしようとすると、アップロードができません。エラーが表示されるわけでもないので、何が原因なのかよくわかりません。FTPサーバ側の設定でしょうか? このような内容にお心当たりのある方がいらっしゃいましたら、アドバイスをお願い致します。

  • ファイルのパーミッション属性の変更方法

    初心者の質問です。 はじめてHPを作成することとなり、 その雛形をffftpでアップロードしました。 ところがリンク集が作動しなかったので、 調べたところファイルやフォルダのパーミッション属性を マニュアル通りに設定しなければならないとがわかりました。 アップロードするたびに属性変更するのは大変ですので、 あらかじめ属性変更を行ってからアップロードしたいのですが、 その方法を教えてください。 ffftpでは、リモートサイトの属性しか変更できないようです。 もしくはリモートサイトのファイルを複数個一度に変更できますか? よろしくお願いします。

  • FTPにてパーミッション一斉変更の際、ファイル属性も指定したい

    私は、ファイル転送でFFFTPを使ってますが、大量のcgi、php等のスクリプトをアップロードした場合、後でファイルパーミッションが不適合な事があります。 その際、FFFTPでは、同じディレクトリならまとめて、属性変更ができますが、大量のスクリプトが多くのディレクトリに分散していた場合は、1つ1つディレクトリにアクセスして属性変更をしなければならない大変な作業が必要になります。 なので、FTPにてあるディレクトリ以下の全てのphpファイル、もしくはcgiファイルとファイル属性を指定し、その属性に該当するファイルに限りパーミッションを755に変更するという事を行いたいのですが、どの様にすればできるのでしょうか? ご回答宜しくお願いします。

  • linuxでのftpクライアントプログラムをつくるには

    Windows(VC++ MFCを使用して)などで ftpクライアントのプログラムを作成することが出来るみたいですが linux(TURBO LINUX 4.0)で同様なことはできないのでしょうか? 具体的には 以下のようなことがしたいためです。 (1) ftpサーバーにlinuxマシンにてクライアントでログイン (2) サーバー上のftpホームディレクトリにあるファイルができるまで周期的に監視 (3) 該当するファイルができたらファイルをクライアント側に転送 (1)~(3)を一回のftp接続状態のまま自動的(プログラム)で行ないたいのです。 VC++ MFCでは,FTPを行なうクラスがいくつかあるみたいですが? どなたかわかりましたら御回答ください。

  • FTPでSitesフォルダにアップロードしたファイルが権限の問題でWeb閲覧できない

    FTPでアップロードされたフォルダ・ファイルの初期パーミッションは固定できますでしょうか. OS10.3.5でパーソナルWeb共有とFTPサービスを開始しました. FTPでユーザーのホームディレクトリ内のSitesフォルダにhtmlファイルtest.htmをアップロードし, ブラウザでhttp://・・・/~ユーザー名/test.htmを開いても Forbiddenとなってしまいます. FTPクライアントソフトでファイルの属性を見ると000となっていました. これを644などに変更したところ閲覧できたのですが, アップロード後に設定変更しなくても最初から閲覧可能な属性にする方法はありますでしょうか.

    • ベストアンサー
    • Mac
  • 属性変更

    FFFTPではサーバーにアップロードしたファイルを属性変更できるのですがコマンドプロンプトでは属性変更できないのでしょうかできるのだったらどんなコマンドを使えばできるのでしょうか

  • FTPとファイルコピーの違いについて

    FTPについて初心者なので教えてください。 たまにプログラムの中にFTPを使用してクライアントからサーバーにファイルをアップロードしているプログラムを見るのですが、自分としてはただ単にファイルをサーバーにコピーするプログラムでいいじゃないかと思うのですが、速さとか何か違いがあるのでしょうか?ご教授宜しくお願いします。 ちなみに言語はDelphi7です。

  • FTP 権限について

    FTPで自分がアップロードしたフォルダを他の人が開けないようにすることはできますか? 例えば自分がtestというフォルダの中にtest1というテキストファイルを入れてアップロードしたときに他の人がFTPにログインしてそのフォルダを開けないようにする、もしくはフォルダを開いても中のテキストファイルは開けないようにするなど出来るのでしょうか? 自分でアカウントを二つ作ってためしてみたのですが、FFFTPというソフトを使ってAというアカウントでログインして属性を変更して開かないようにしても、Bというアカウントでログインして属性を変更できるので結局Bがフォルダの中身を見れる状態になってしまいます。 教えてくださいm(_ _ )m

  • 属性値を変えられないのはなぜですか?

     属性値を変えられないプロバイダってあるのですか? 私はso-netに加入しているのですが、FTPソフトから転送した 任意のファイルの「属性変更」にて、例えば、655だった数値を 755に変えて「OK」を選択して確認してもまた655に戻っているのです。  ちなみに、友人はニフティに加入しており同じように試してみたら しっかりと変更できました。この原因はプロバイダにあるのでしょうか? FTPソフトは「FFFTP」です。 どうかよろしくお願い致します。

    • 締切済み
    • CGI
  • WSHでファイルの属性を変更する

    MacOSXはピリオドで始まる非表示のファイルを作成します。 これは、ウインドウズからは見えてしまうので、属性を非表示にしたいのですが、 いちいち手動では、きりがないので、スクリプトで自動化出来そうなのですが、 ところが、知識が全然ないのでどのようにとっつけば良いのか、霧の中状態です。 一応、VBやVCの文法は多少読めるのですが、どのようにすればよいのか教えていただけたら幸いです・・・・ また、これらを勉強するのに良い方法(サイト)もあれば教えてください。