当前位置:  开发笔记 > 编程语言 > 正文

如何使用FtpWebRequest(.NET)更改目录?

如何解决《如何使用FtpWebRequest(.NET)更改目录?》经验,为你挑选了1个好方法。

有人能告诉我如何使用FtpWebRequest更改目录吗?这似乎应该是一件容易的事,但我没有看到它.

编辑

我只想添加...我没有在FtpWebRequest上设置我的心.如果有更好(更简单)的方法在.NET中进行FTP请告诉我.


显然没有办法使用实时连接,你需要更改uri以欺骗ftpwebrequest使用不同的请求(感谢Jon).

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

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



1> Jon Skeet..:

有来自Mariya Atanasova 的博客文章,展示了如何伪造它 - 基本上你必须把目录放在URL上.

我怀疑你可能会因为一个专用的FTP库而变得更好 - 一个不会试图强迫所有东西进入WebRequest做事的方式.我没有亲自使用任何第三方库,但搜索"FTP库.NET"找到了很多候选人.


编辑:jcolebrand(2006年博客链接的可能性)

许多客户问我们如何在我们的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

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有