【问题标题】:Alternatives to using WebRequestMethods.Ftp.GetFileSize?使用 WebRequestMethods.Ftp.GetFileSize 的替代方法?
【发布时间】:2019-09-28 06:55:15
【问题描述】:

我目前遇到WebRequestMethods.Ftp.GetFileSize 抛出异常的问题

文件不可用(例如,找不到文件,无法访问该文件)

我已经研究了这个问题,并了解到问题的发生是因为我的 FTP 服务器不支持该功能。后来我联系了我的网络服务器提供商,他们确认不支持该功能,除非我购买了他们的 VPS 计划之一(我目前在共享主机上)。

// get size of file
FtpWebRequest sizeRequest = (FtpWebRequest)WebRequest.Create("ftp://ftp.domain.com/test.txt");
sizeRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails; // or GetFileSize();
sizeRequest.Credentials = new NetworkCredential("user", "password");
sizeRequest.UsePassive = true;
sizeRequest.UseBinary = true;
sizeRequest.KeepAlive = true;
int size = (int)sizeRequest.GetResponse().ContentLength;

我的问题是GetFileSize 方法有解决方案吗?我调查了ListDirectoryDetails。但是,由于我只需要一个数据,我需要解析其余的数据,在研究如何做到这一点之后,我需要一段时间才能充分理解我需要编写的代码,因为我只是新手 C# 程序员。

【问题讨论】:

    标签: c# .net ftp shared-hosting ftpwebrequest


    【解决方案1】:

    当然,FTP 协议没有两种检索文件大小的方法。即使有,另一种方法也会在您的服务器上被禁用,就像SIZE 一样。


    所有其他选项都涉及解析目录列表。

    你可以使用:

    • MLST – 以机器可读格式检索特定文件的文件属性。虽然这是最好的选择,但如果您想检索 一个 大小的特定文件,FtpWebRequest 不支持它。您将不得不使用另一个 FTP 库。

      例如myWinSCP .NET assembly,你可以使用Session.GetFileInfo

      session.GetFileInfo("/remote/path/file.txt").Length
      
    • MLSD – 以机器可读格式检索目录中所有文件的文件属性。同样,FtpWebRequest 不支持。

    • LIST – 检索未定义格式的目录列表。如您所知,FtpWebRequest 通过ListDirectoryDetails 方法支持此功能。

      有关在 C# 中解析的示例,请参阅我对以下内容的回答:
      Parsing FtpWebRequest ListDirectoryDetails line

    【讨论】:

    • 好的,我唯一担心的是我不确定 FtpWebRequest 不支持的 MLSD 或 MLST 是否有启用 SSL 加密的选项(我知道 FtpWebRequest 可以),这是我的下一个问题。 SSL 加密在安全性方面会有什么不同吗?当涉及到 FTP 和向公众提供信息时,安全性对我来说是一个大问题(我的 Web 服务器上运行着一个有效的 SSL)。
    • 抱歉,您的评论/问题对我来说毫无意义。加密是 FTP 协议的东西,与特定的命令无关。考虑为此提出一个单独的问题并详细说明您的担忧。
    • 我相信您当前的问题已经得到解答。
    • 也许我可以更具体一些,我使用这个链接:link 来帮助我使用 ftpwebrequest 函数,我看到用红色拼写了这个文本:
    • 除非 EnableSsl 属性为 true,否则所有数据和命令,包括您的用户名和密码信息,都会以明文形式发送到服务器。任何监控网络流量的人都可以查看您的凭据并使用它们连接到服务器。如果您要连接到需要凭据并支持安全套接字层 (SSL) 的 FTP 服务器,则应将 EnableSsl 设置为 true。
    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多