有人可以告诉我如何使用 FtpWebRequest 更改目录吗?这看起来应该是一件很容易做到的事情,但我没有看到它。

编辑

我只是想补充...我对 FtpWebRequest 没有兴趣。如果有更好(更简单)的方法在 .NET 中执行 FTP,请告诉我。


显然没有办法使用实时连接来做到这一点,您需要更改 uri 来欺骗 ftpwebrequest 使用不同的请求(感谢 Jon)。

所以我正在寻找第3方客户端......

我尝试过的一些开源解决方案效果不太好(不断崩溃),但我发现一个开源解决方案通过了我的一些初步测试(.NET FTP 客户端).

有帮助吗?

解决方案

有从玛丽亚Atanasova一个博客文章这显示了如何捏造事实 - 基本上你必须把目录上的网址

我怀疑你可能是用专用的FTP库虽然过得更好 - 一个不尝试一切强迫做事情的方式的WebRequest。我没有亲自使用这方面的任何第三方库,但对于“FTP库.NET”一搜发现很多考生。


编辑:jcolebrand(在2006年博客linkrot可能性的情况下)

  

许多客户问我们,他们如何使用CWD命令与我们的FtpWebRequest。

     

答案是:你不能直接使用该命令,但可以修改uri参数以实现相同的结果

     

让我们假设你正在使用的格式如下:

String uri = "ftp://myFtpUserName:myFtpUserPassword@myFtpUrl";
FtpWebRequest Request = (FtpWebRequest)WebRequest.Create(uri);
Request.Method = "LIST";
  

在上面的例子将带您到您的用户目录,并列出所有的内容在那里。现在,让我们说你要倒退2个目录,并列出其中的内容有(前提是您的用户有权这样做)。您关闭以前的FtpWebRequest并发出一个新的与此URI

uri = "ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/%2E%2E/%2E%2E";
  

这等同于用您的用户的凭证登录,然后使用cd ../../

     

注意:如果尝试直接使用而不”..”逸出他们Uri类将去除它们,所以"ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/../.."相当于"ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/"

     

现在让我们说你要到其他用户的目录是一个级别的根部以上。如果不指定用户名和密码,它等同于记录在为匿名用户。然后你发出新的FtpWebRequest具有以下URI

"ftp://myFtpUrl/%2F/anotherUserDir"
  

这相当于作为匿名登录,然后做

Cd /
cd anotherUserDirectory

其他提示

您必须关闭当前连接:

request.Close();

和打开一个新的与其他URI:

uri = "ftp://example.com/%2F/directory" //Go to a forward directory (cd directory)
uri = "ftp://example.com/%2E%2E" //Go to the previously directory (cd ../)

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);

您可以使用 FtpWebRequest 的 ListDirectoryDe​​tails 方法,而不是使用 FTPWebRequest 的 ListDirectory 方法。

由此您可以使用正则表达式来获取您想要的值。就是这样,就我而言,它工作得很好

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top