【问题标题】:How to list directory contents of an FTP connection如何列出 FTP 连接的目录内容
【发布时间】:2012-12-28 23:15:53
【问题描述】:

我找不到这方面的教程。在 VB.NET 中,我想做一个命令,例如:

Dim array1() as string = ListFilesInFolder("www.example.com/images")

我知道这可能不会那么简单,但谁能给我指点教程或任何东西?

【问题讨论】:

标签: vb.net ftp


【解决方案1】:

使用这个免费库http://netftp.codeplex.com/

Imports System.Net
Imports System.Net.FtpClient

Sub Main
    using ftp = new FtpClient()

        ftp.Host = "www.example.com"
        ftp.Credentials = new NetworkCredential("yourFTPUser", "yourFTPPassword")
        ftp.SetWorkingDirectory("/images")
        for each item in ftp.GetListing(ftp.GetWorkingDirectory())

            select case item.Type
                case FtpFileSystemObjectType.Directory:
                    Console.WriteLine("Folder:" + item.FullName)
                case FtpFileSystemObjectType.File:
                    Console.WriteLine("File:" + item.FullName)
            End Select
        Next
    End Using    
End Sub

当然我假设 www.example.com 是一个 FTP 服务器。

重要提示:库需要完整的Framework 4.0。您应该转到Project Properties 的构建页面,单击Advanced Options 并选择Framework 4.0 而不是Framework 4.0 Client Profile

【讨论】:

  • Imports System.Net 需要
  • Steve,添加这使错误消失,但是当我在 vb.net 中单击运行时,它会引发错误,例如“未声明错误 4 'FtpFileSystemObjectType'。它可能无法访问,因为它保护等级。”是的,我在项目中添加了引用并在 DLL 和 system.net 上导入
  • 你也有Imports System.Net.FtpClient 吗?缺少这似乎是您错误的唯一原因。我已经尝试了上面的示例并且没有问题
  • 这很奇怪。我也有!嗯!
  • 另一件奇怪的事情,在“Imports System.Net.FtpClient”上,它以绿色突出显示,并且在我的一个代码行错误中抛出了 FtpClient 未定义。
【解决方案2】:

以下方法适用于framework 3.5 及更高版本,我知道这个问题已有 3 年历史,但我遇到了需要在framework 3.5 项目中列出 FTP 目录的情况,所以我通过引用 @ 编写了以下代码987654321@.

Imports System.Net

Dim Dirlist As New List(Of String) 'I prefer List() instead of an array
Dim request As FtpWebRequest = DirectCast(WebRequest.Create("ftp://www.example.com/images"), FtpWebRequest)

request.Method = WebRequestMethods.Ftp.ListDirectory
request.Credentials = New NetworkCredential("USER_NAME", "PASSWORD")

Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
Dim responseStream As Stream = response.GetResponseStream

    Using reader As New StreamReader(responseStream)
          Do While reader.Peek <> -1
             Dirlist.Add(reader.ReadLine)
          Loop
    End Using
response.Close()

【讨论】:

  • 这个答案也Imports System.IO
  • 还有Imports System.Collections.Generic 也适用于List (Of String)
猜你喜欢
  • 2015-01-16
  • 2011-03-18
  • 2010-09-11
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 2011-01-28
  • 2011-02-15
  • 1970-01-01
相关资源
最近更新 更多