有人能告诉我如何使用FtpWebRequest更改目录吗?这似乎应该是一件容易的事,但我没有看到它.
编辑
我只想添加...我没有在FtpWebRequest上设置我的心.如果有更好(更简单)的方法在.NET中进行FTP请告诉我.
显然没有办法使用实时连接,你需要更改uri以欺骗ftpwebrequest使用不同的请求(感谢Jon).
所以我正在寻找第三方客户......
我尝试过的一些开源解决方案效果不好(不断崩溃),但我发现一个开源解决方案通过了一些初步测试(.NET FTP Client).
有来自Mariya Atanasova 的博客文章,展示了如何伪造它 - 基本上你必须把目录放在URL上.
我怀疑你可能会因为一个专用的FTP库而变得更好 - 一个不会试图强迫所有东西进入WebRequest做事的方式.我没有亲自使用任何第三方库,但搜索"FTP库.NET"找到了很多候选人.
许多客户问我们如何在我们的FtpWebRequest中使用CWD命令.
答案是:您不能直接使用该命令,但您可以修改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