Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 免费FTP库_C#_Ftp - Fatal编程技术网

C# 免费FTP库

C# 免费FTP库,c#,ftp,C#,Ftp,你能为C#推荐一个免费的FTP库(类)吗 该类必须编写良好,并且性能良好。您可以使用或是一个免费、快速、开源的.NET FTP库,用C#编写。为什么不使用.NET framework附带的库: 编辑:2019年4月 这个答案不再有效。其他答案得到了微软的认可 它们是由Microsoft设计的,Microsoft不再建议使用它们: 我们不建议您在新开发中使用FtpWebRequest类。有关FtpWebRequest的更多信息和替代方案,请参阅不应在GitHub上使用WebRequest。() “

你能为C#推荐一个免费的FTP库(类)吗


该类必须编写良好,并且性能良好。

您可以使用或是一个免费、快速、开源的.NET FTP库,用C#编写。

为什么不使用.NET framework附带的库:

编辑:2019年4月 这个答案不再有效。其他答案得到了微软的认可

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

我们不建议您在新开发中使用FtpWebRequest类。有关FtpWebRequest的更多信息和替代方案,请参阅不应在GitHub上使用WebRequest。()

“WebRequest不应该被使用”页面反过来指向这个问题,作为库的最终列表

我刚刚介绍了一个FTP客户端类和一个FTP用户控件

它们很简单,速度也不是很快,但是很容易使用,并且包含了所有的源代码。只需将用户控件放到窗体上,以允许用户从应用程序中导航FTP目录。

,您可以考虑,以前称为“

”。
它是在NuGet(FluentFTP)下发布的,可以在NuGet(FluentFTP)上使用。

我喜欢它,它是由微软MVP的名字Alex Pilotti编写的。它是一个C#库,您可以在控制台应用程序、Windows窗体、PowerShell、ASP.NET(任何.NET语言)中使用。如果你有一个多线程应用程序,你必须将库配置为同步运行,但总的来说,这是一个很好的客户端,很可能会满足你的需要。

在对同一问题进行大量调查后,我发现这一个非常方便:

例如(尝试使用标准的.net“库”执行此操作-这将是一个真正的难题)-> 递归地重新修订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);
        }
    }
public IEnumerable GetFiles(字符串服务器、字符串用户、字符串密码)
{
var凭证=新的网络凭证(用户、密码);
var baseUri=新的Uri(“ftp://“+server+”/”);
var files=新列表();
AddFilesFromSubdirectory(文件、baseUri、凭据);
归还文件;
}
私有void addfilesfrom子目录(列表文件、Uri、网络凭据凭据)
{
var客户端=新的FtpClient(凭证);
var lookedUpFiles=client.GetFiles(uri);
files.AddRange(lookedUpFiles);
foreach(client.GetDirectories(uri)中的var子目录)
{
AddFilesFromSubdirectory(文件、subDirectory.Uri、凭证);
}
}

谢谢!!!这真的非常有效!它列出了正确的日期和时间目录:))和它的速度!示例代码:FtpClient ftp=新的FtpClient(txtsername.Text,txtPassword.Text,txtFTPAddress.Text)
FtpListItem[]items=ftp.GetListing()//在这里,您可以获得包含类型、名称、修改日期和其他属性的列表。FtpFile file=新的FtpFile(ftp,“8051812.xml”)//下载(“c:\\8051812.xml”)//下载文件.Name=“8051814.xml”//更改名称以获取新文件。下载(“c:\\8051814.xml”);ftp.Disconnect()//关闭
请注意,编译后的库适用于.NET 3,但转换为2.0Is的代码很简单,也可以使用als NuGet软件包:System.NET.FtpClientTrue,但您可以轻松添加自己的扩展方法,使其具有与以前相同的语法。这里是我的:虽然FluentFTP确实是一个很好的.NET FTP客户端库,但不幸的是它不支持TLS/SSL会话重用。如今,当安全是必须的,并且许多FTP服务器需要重用时,这是一个严重的限制。请看。我不是100%确定,但这些类不是在每次请求时重新连接吗?如果是这种情况,那么性能将受到影响。
FtpWebRequest
类只适用于简单的事务性FTP操作,这些操作可以根据请求/响应模式建模,例如下载或上载单个文件。使用它来执行创建FTP文件夹结构或在同一会话中上载和下载等任务是非常困难的。“应该”是最重要的一个词。调试只在单元测试中起作用的FtpWebRequest示例可能不值得花时间。非常。。。坏组件-您无法轻松列出文件或文件夹,如果您提供了错误的url-它将毫无例外地运行,但将返回带有消息的html-我找不到任何文件(因此,您需要解析该html)。。。我认为微软可以花一些时间来创建普通的库,而不是这个……微软的文档说不要用于新项目,这反过来又指向了这个问题。网站过时的设计并没有给我对库的质量带来多少信心。它是在LGPL许可下的。因此,如果你正在开发商业产品/服务,你正在打开一个蠕虫的罐头,你可以做什么,你不能做什么,包括什么,等等,多个答案等等,其他人对这个问题给出了不同的意见…我是这个软件的开发者之一。我想我应该插嘴说,我们从来没有就LGPL违规问题追查过任何人,甚至没有想过寻找任何此类案件。当库在2003年首次发布时,我们选择此许可证的主要原因是LGPL是世界上唯一广为人知的许可证之一。现在有更多的选择,我们可能会找到另一个更适合我们目标的许可证。我们唯一要确保的是,没有人使用我们的软件来创建与之竞争的商业产品。有没有人对不那么繁重的许可证有什么建议?顺便说一句,如果你的法律人员担心这个问题,你可以花99美元购买一个更自由的许可证。哦,而且网站现在已经更新了:)。该产品仍然非常活跃,部分原因是它是另一个非常成功的产品,即CompleteTP的一部分。感谢Oleksii指出这个问题。我们将对此进行讨论。flagftp使用Windows ftp客户端调用。这不是一件好事或坏事,但它确实意味着图书馆很容易受到影响