3

FTP Web サーバーからのいくつかのアップロード/ダウンロード タスクを自動化しようとしています。ディレクトリにアクセスするために、クライアントまたは Firefox を介してサーバーに接続する場合、次のようなパスを指定する必要があります。

ftp://ftpserver.com/../AB00000/incoming/files

これにアクセスしようとすると:

ftp://ftpserver.com/AB00000/incoming/files

サーバーは、ディレクトリが存在しないというエラーをスローします。だから、問題:

最初の ftp アドレスで FTPWebRequest を作成しようとしていますが、常に "/../" の部分が解析され、サーバーはパスが存在しないと言います。

私はこれらを試しました:

    Uri target = new Uri("ftp://ftpserver.com/../AB00000/incoming/files");
FtpWebRequest request = (FtpWebRequest)WebReqeuest.Create(target);

string target = "ftp://ftpserver.com/../AB00000/incoming/files";
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);

最初のビットでは、Uri オブジェクトがインスタンス化されるときにパスが既に正しくありません。2 番目のビットでは、WebRequest.Create メソッドの後です。何が起こっているのですか?

編集:

さらに、これを投稿してから、no parse オプションを使用して URI を作成してみました。私も次のようなことを試しました:

string ftpserver = "ftp://ftpserver.com/../";
string path = "12345/01/01/file.toupload";

Uri = new Uri(ftpserver, path, true);

そして、常にルート部分 ("/../") を解析します。

4

3 に答える 3

10

次のようなもので .. をエスケープしてみてください。

Uri target = new Uri("ftp://ftpserver.com/%2E%2E/AB00000/incoming/files");

これは、このディスカッションで見つけたこのブログに従って機能します。

于 2009-02-06T16:40:58.870 に答える
-1

@記号をそのように使用してみましたか?

Uri target = new Uri(@"ftp://ftpserver.com/../AB00000/incoming/files");
FtpWebRequest request = (FtpWebRequest)WebReqeuest.Create(target);
于 2009-01-26T18:02:51.697 に答える