免费FTP库[关闭]


Answers:


74

您可以考虑FluentFTP,以前称为System.Net.FtpClient

它以MIT许可证发布,可在NuGet(FluentFTP)上获得。


6
谢谢!!!这真的很好!它列出了具有正确日期时间的目录:))))及其快速!示例代码:FtpClient ftp =新的FtpClient(txtUsername.Text,txtPassword.Text,txtFTPAddress.Text); FtpListItem[] items = ftp.GetListing();//here you can get list with type, name, modified date and other properties. FtpFile file = new FtpFile(ftp, "8051812.xml");//file to get file.Download("c:\\8051812.xml");//download file.Name = "8051814.xml";//change name to get new file.Download("c:\\8051814.xml"); ftp.Disconnect();//close
Zviadi '02

1
请注意,已编译的库适用于.NET 3,但代码可轻松转换为2.0
Deanna 2012年

3
NuGet软件包也可用:System.Net.FtpClient
Jeroen K

1
有点不那么容易(现在?),而不是file.Download,Stream s = connection.OpenRead(filename)
Jeroen K

2
是的,但是您可以轻松添加自己的扩展方法以具有与以前相同的语法。这是我的:pastebin.com/FiKMrH76
Erwin Mayer

20

您为什么不使用.NET框架随附的库:http : //msdn.microsoft.com/zh-cn/library/ms229718.aspx

编辑:2019年4月,通过https://stackoverflow.com/users/1527/ 此答案不再有效。其他答案也得到Microsoft的认可。

它们是由Microsoft设计的,不再建议使用它们:

我们不建议您将FtpWebRequest类用于新开发。有关FtpWebRequest的更多信息和替代方法,请参阅不应在GitHub上使用WebRequest。(https://docs.microsoft.com/zh-cn/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2

“不应该使用WebRequest”页面又将这个问题指向了库的权威列表!


3
我不是100%不确定,但是这些类是否不会在每次请求时重新连接?如果
彼得

22
FtpWebRequest班只有真正适用于简单,可在请求/响应模式来模拟交易FTP操作,如上传或下载单个文件。使用它来执行诸如创建FTP文件夹结构或在同一会话中上载和下载之类的任务非常困难。

1
“应该”是操作词。调试仅在单元测试中有效的FtpWebRequest示例可能不值得您花时间。
CZahrobsky

1
非常...错误的组件-如果提供错误的URL,您将无法轻松列出文件或文件夹-它会毫无例外地运行,但会返回带有消息的html-我没有找到任何文件(因此,您需要解析该html)...我认为微软可以花一些时间并创建普通库,而不是这个...
VikciaR 2015年

2
MS文档docs.microsoft.com/zh-cn/dotnet/api/…表示不要用于新项目,并指向github.com/dotnet/platform-compat/blob/master/docs/DE0003.md,其中转弯指向这个问题
Pete Kirkham

12

edtFTPnet是使用C#编写的用于.NET的免费,快速,开源FTP库。


7
该站点过时的设计并没有使我对图书馆的质量充满信心。
Jeroen K 2013年

1
它已获得LGPL许可。因此,如果您要开发商业产品/服务,那么您将打开一堆蠕虫,这些蠕虫会蠕动您可以做什么,不能做什么,包括哪些内容等。SO上的多种答案以及其他方面对此都有不同的看法。 ..
Oleksii Vynnychenko '16

我是该软件的开发人员之一。我以为自己只是想筹集资金,因为我们从未针对LGPL违规行为追究任何人,甚至从未考虑过寻找任何此类案件。我们在2003年库首次发布时选择此许可证的主要原因是LGPL是周围仅有的如此广为人知的许可证之一。现在有更多选择,我们可能应该找到另一个更适合我们目标的许可证。我们唯一要确保的是没有人使用我们的软件来创建与之竞争的商业产品。有人建议您减少许可费吗?
汉莎'17

1
顺便说一句,如果您的法务人员对此感到担心,您可以以$ 99的价格购买更自由的许可证。哦,网站现在也已经更新了:)。该产品仍然非常活跃,部分原因是它是另一个非常成功的产品,即CompleteFTP的一部分。感谢Oleksii指出了这个问题。我们将讨论它。
汉莎'17

7

我喜欢由Microsoft MVP名称Alex Pilotti编写的Alex FTPS客户端。这是一个C#库,您可以在控制台应用程序,Windows窗体,PowerShell,ASP.NET(以任何.NET语言)中使用。如果您有多线程应用程序,则必须将库配置为同步运行,但是总体而言,一个好的客户端很可能会为您提供所需的东西。



1

我刚刚发布了一篇介绍FTP客户端类和FTP用户控件的文章。

它们很简单,并且速度不是很快,但是非常易于使用,并且包含所有源代码。只需将用户控件放到一个表单上,以允许用户从您的应用程序浏览FTP目录。


1

在对同一问题进行大量调查后,我发现此方法非常方便:https : //github.com/flagbug/FlagFtp

例如(尝试使用标准的.net“ library”进行操作-这将是一个真正的痛苦)->递归地删除FTP服务器上的所有文件:

  public IEnumerable<FtpFileInfo> GetFiles(string server, string user, string password)
    {
        var credentials = new NetworkCredential(user, password);
        var baseUri = new Uri("ftp://" + server + "/");

        var files = new List<FtpFileInfo>();
        AddFilesFromSubdirectory(files, baseUri, credentials);

        return files;
    }

    private void AddFilesFromSubdirectory(List<FtpFileInfo> files, Uri uri, NetworkCredential credentials)
    {
        var client = new FtpClient(credentials);
        var lookedUpFiles = client.GetFiles(uri);
        files.AddRange(lookedUpFiles);

        foreach (var subDirectory in client.GetDirectories(uri))
        {
            AddFilesFromSubdirectory(files, subDirectory.Uri, credentials);
        }
    }

flagftp使用Windows ftp客户端调用。这不是一件好事或坏事,但这确实意味着该库容易遭受Windows ftp调用可能引发的相同错误
John Mott 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.