C# 使用WebRequestMethods.Ftp.GetFileSize的替代方案?

C# 使用WebRequestMethods.Ftp.GetFileSize的替代方案?,c#,.net,ftp,shared-hosting,ftpwebrequest,C#,.net,Ftp,Shared Hosting,Ftpwebrequest,我当前遇到一个问题,WebRequestMethods.Ftp.GetFileSize引发异常 文件不可用(例如,找不到文件,无法访问文件) 我已经研究了这个问题,并了解到问题的发生是因为我的FTP服务器不支持该功能。我后来联系了我的web服务器提供商,他们确认,除非我购买了他们的VPS计划(我目前使用共享主机),否则不支持该功能 我的问题是GetFileSize方法有解决方案吗?我已经研究了ListDirectoryDetails。然而,由于我只需要一段数据,我需要解析其余的数据,在研究了如何

我当前遇到一个问题,
WebRequestMethods.Ftp.GetFileSize
引发异常

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

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


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

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


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

您可以使用:

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

    例如,对于my,您可以使用:

  • MLSD
    –以机器可读格式检索目录中所有文件的文件属性。同样,FtpWebRequest不支持
    FtpWebRequest

  • 列表
    –以未定义的格式检索目录列表。这是由
    FtpWebRequest
    通过
    ListDirectoryDetails
    方法支持的

    有关C语言解析的示例,请参见我的答案:


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


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

您可以使用:

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

    例如,对于my,您可以使用:

  • MLSD
    –以机器可读格式检索目录中所有文件的文件属性。同样,FtpWebRequest不支持
    FtpWebRequest

  • 列表
    –以未定义的格式检索目录列表。这是由
    FtpWebRequest
    通过
    ListDirectoryDetails
    方法支持的

    有关C语言解析的示例,请参见我的答案:


好的,我唯一关心的是,我不确定FtpWebRequest不支持的MLSD或MLST是否有启用SSL加密的选项(我知道FtpWebRequest有),这是我的下一个问题。SSL加密在安全性方面会有什么不同吗?当涉及到FTP和公众可获得的信息时(我的web服务器上运行着一个活动SSL),安全性对我来说是一个大问题。对不起,你的评论/问题对我来说没有什么意义。加密是FTP协议的事情,与特定命令无关。考虑问一个单独的问题,并详细说明你的担心。我相信你现在的问题是回答的。也许我可以更具体地说,我正在使用这个链接:帮助我使用FTPWebReQuesty函数,我用红色看到了这篇文章的拼写:除非Enabess L属性是真的,所有的数据和命令,包括您的用户名和密码信息,将以明文形式发送到服务器。任何监视网络流量的人都可以查看您的凭据并使用它们连接到服务器。如果您连接到需要凭据且支持安全套接字层(SSL)的FTP服务器,则应将EnableSsl设置为true。好的,我唯一关心的是,我不确定FTPWebreRequest不支持的MLSD或MLST是否有启用SSL加密的选项(我知道FTPWebreRequest有),这是我的下一个问题。SSL加密在安全性方面会有什么不同吗?当涉及到FTP和公众可获得的信息时(我的web服务器上运行着一个活动SSL),安全性对我来说是一个大问题。对不起,你的评论/问题对我来说没有什么意义。加密是FTP协议的事情,与特定命令无关。考虑问一个单独的问题,并详细说明你的担心。我相信你现在的问题是回答的。也许我可以更具体地说,我正在使用这个链接:帮助我使用FTPWebReQuesty函数,我用红色看到了这篇文章的拼写:除非Enabess L属性是真的,所有的数据和命令,包括您的用户名和密码信息,将以明文形式发送到服务器。任何监视网络流量的人都可以查看您的凭据并使用它们连接到服务器。如果要连接到需要凭据并支持安全套接字层(SSL)的FTP服务器,则应将EnableSsl设置为true。
// 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;
session.GetFileInfo("/remote/path/file.txt").Length