VC#のFtpWebRequestで多階層のディレクトリを作成することができません。
以下のようにすることで例えばftp://hogehoge.com/hoge1/というディレクトリがあったとしてそのhoge1の中にhoge2というディレクトリを作る事は出来ます。一階層のディレクトリまでなら作れることは確認しています。
Uri u = new Uri("ftp://hogehoge.com/hoge1/hoge2/") ;
System.Net.FtpWebRequest ftpReq = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(u);
ftpReq.Credentials = new System.Net.NetworkCredential(ini[1], ini[2]);
ftpReq.Method = System.Net.WebRequestMethods.Ftp.MakeDirectory;
System.Net.FtpWebResponse ftpRes = (System.Net.FtpWebResponse)ftpReq.GetResponse();
ftpRes.Close();
しかし、ftp://hogehoge.com/hoge1/hoge2/hoge3/hoge4/hoge5/
ぐらいまでディレクトリを作ろうとした時、上のUriの値を
ftp://hogehoge.com/hoge1/hoge2/hoge3/hoge4/hoge5/
にしてもディレクトリを作る事ができません。
ftp://hogehoge.com/hoge1/hoge2/
のように一階層なら上でも書いたとおり作成できますが
ftp://hogehoge.com/hoge1/hoge2/hoge3/
と指定した場合、作成することができません。
場当たり的に上のコードを4,5回繰り返すことでhoge5までの作成は可能なことは可能でしたが、リクエストを大量に送りつけてしまい、ソースも長くなってしまうので他の方法を考えたいです。
他の方法でもかまいませんので何かいい方法はございませんでしょうか。
環境
VC# 2008 .netFramework 4.0 winXP SP3
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
相手の
・OS が分かっている
・ftpサーバと直接に話をする
・ftpサーバがシェルエスケープを実装している
なら, 場合によってはコマンド一発で作ることもできるでしょうが, 今のままではどうにもならないと思います.
No.1
- 回答日時:
hoge3を作ろうにもhoge2がないからどこに作っていいかわからんぞ~
と言ってきているような気がします。
フォルダをつくるという関数を用意しておいてそれを再帰呼び出しするようにすればよいのではないでしょうか?
これはPC内にフォルダを作る例ですが、
private void CreateDirectory(System.IO.DirectoryInfo d)
{
if (d.Parent.Exists == false)
{
CreateDirectory(d.Parent);
}
d.Create();
}
こういう感じに書けばコード量は少なくて済みますね。
リクエストを大量に送りつけてしまうのは回避できませんが…
もしくはhoge3/hoge4/hoge5を内部にもっているフォルダhoge2をアップロードすれば
まとめて生成できるのではないでしょうか?
これは間違っている気がしますが…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NET 最下位のディレクトリ名...
-
makefile でファイルをコピーす...
-
CFileDialogの最初のディレクト...
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
PHPで空ファイルの作成方法
-
上位ディレクトリ名(フォルダ...
-
renameでのPermission deniedエ...
-
define でのルートディレクト...
-
Subversionで、ファイルをリネ...
-
レンタルサーバーでPDF出力
-
fopenでファイルが開かない場合...
-
現在位置より2つ上のディレク...
-
rmdirでフォルダが消せません
-
C言語でのディレクトリ作成につ...
-
IIS+PHP スクリプトから仮想デ...
-
ディレクトリのコピー、リネイム
-
VB2008でFTPでのディ...
-
LinuxからNASを使用したときの...
-
str ! = NULL
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
makefile でファイルをコピーす...
-
fopenでファイルが開かない場合...
-
DLL のロードの順序
-
MkDir関数
-
現在位置より2つ上のディレク...
-
VB.NET 最下位のディレクトリ名...
-
[ ディレクトリ '.' は書き込み...
-
renameでのPermission deniedエ...
-
Visual C++ 2005 Express Editi...
-
JAVA内で複数のファイルを削除...
-
VB2008でFTPでのディ...
-
visualstudioでc#のdllができない
-
rmdirでフォルダが消せません
-
バッチファイルで特定ファイル...
-
exec()で他ディレクトリのexeプ...
-
絶対パス?絶対アドレス?意味...
おすすめ情報