FTPサーバー上のあるディレクトリから別のディレクトリにファイルを移動する必要があるプログラムがあります。たとえば、ファイルがである:FTPを使用してディレクトリ間でファイルを移動するにはどうすればよいですか?
ftp://1.1.1.1/MAIN/Dir1
と私はにファイルを移動する必要があります。
ftp://1.1.1.1/MAIN/Dir2
私は名前の変更コマンドの使用を推奨する記事のカップルを見つけたので、私は次のことを試してみました:
Uri serverFile = new Uri(“ftp://1.1.1.1/MAIN/Dir1/MyFile.txt");
FtpWebRequest reqFTP= (FtpWebRequest)FtpWebRequest.Create(serverFile);
reqFTP.Method = WebRequestMethods.Ftp.Rename;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPass);
reqFTP.RenameTo = “ftp://1.1.1.1/MAIN/Dir2/MyFile.txt";
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
しかし、これは動作するようには思えない - 私は次のエラーを取得する:
The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
最初は私はこれがアクセス許可に関連していると思っていましたが、わかっている限り、私はFTPサイト全体(私のローカルPC上にあり、uriはlocalhostに解決されています)
このようなディレクトリ間でファイルを移動することは可能でしょうか?それ以外の場合はどうすれば可能ですか?提起されているポイント/提案のいくつかに対処するには
:
- を私はソースディレクトリから同じファイルをダウンロードすることができますので、それは間違いなく、最初のファイルをダウンロードして、私がやっている(存在していますそれをどこか別の場所に移動する)。
- ブラウザ(ソースとターゲットの両方のディレクトリ)からftpサイトにアクセスできます
- ftpサーバーはローカルマシン上の自分のIISインスタンスで実行されています。
- パスとケースは正確で、特殊文字はありません。ソースとターゲットパスについて
ftp://1.1.1.1/%2fMAIN/Dir1/MyFile.txt
両方を - しかし、これはどちらかの違いはありません:
また、私がするディレクトリのパスを設定しようとしています。
私はthisという記事を見つけました。相対パスとして宛先を指定すると、絶対パスを宛先として指定することはできません。
reqFTP.RenameTo = “../Dir2/MyFile.txt";
ftp://1.1.1.1/MAIN/Dir1/MyFile.txtをブラウザに接続すると機能しますか? –
パスにエスケープする必要のある特殊文字が含まれていますか? –
最新の編集を参照してください。答えは:はい - ブラウザからは機能しません。また、パスには特殊文字がありません –