【问题标题】:Download file parts via FTP using VB.NET使用 VB.NET 通过 FTP 下载文件部分
【发布时间】:2012-12-16 08:00:18
【问题描述】:

我需要我的程序通过指定 FTP 用户名和密码通过 FTP 下载大文件。
它还必须具有“暂停”功能,这就是为什么我需要我的程序来获取文件部分。 我使用 VB.NET 和 .NET 3.5 框架。有什么办法吗?

【问题讨论】:

  • 为此,您需要为 .NET 使用一些第三方 FTP/FTPS 客户端组件。我可以提到 Rebex.NET 和我们的 SecureBlackbox,还有其他可用的。
  • 我知道 Rebex,但我认为没有 Rebex 也是可能的。我发现 System.Net.FtpWebRequest 是可能的。但我不知道该怎么做。

标签: vb.net ftp download


【解决方案1】:

从 NuGet 包下载 WinSCP

Import WinSCP <br>
Public Class fmbFtp <br>

    Private Sub btnDownload_Click(sender As Object, e As EventArgs) Handles btnDownload.Click

        Try

            ' Setup session options

            Dim sessionOptions As New SessionOptions

            With sessionOptions
                .Protocol = Protocol.Sftp
                .HostName = "example.com"
                .UserName = "UserName"
                .Password = "Password"
                'telnet command to get key
                'ssh-keygen - l - f / etc / ssh / ssh_host_rsa_key
                .SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"

            End With

            Using session As New Session

                ' Connect

                session.Open(sessionOptions)

                ' Upload files

                Dim transferOptions As New TransferOptions
                transferOptions.TransferMode = TransferMode.Binary

                Dim transferResult As TransferOperationResult
                transferResult = session.GetFiles("/path/filename.txt", My.Computer.FileSystem.CurrentDirectory)
                ' Throw on any error
                transferResult.Check()
                ' Print results
                For Each transfer In transferResult.Transfers
                    Console.WriteLine("Upload of {0} succeeded", transfer.FileName)
                Next
            End Using
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class

【讨论】:

    【解决方案2】:

    你可以像这样使用 FtpWebRequest:

    Dim request As System.Net.FtpWebRequest =   DirectCast(System.Net.WebRequest.Create("FTP Path along with destination file name"), System.Net.FtpWebRequest)
    request.Method = System.Net.WebRequestMethods.Ftp.UploadFile
    
    request.Credentials = New System.Net.NetworkCredential("username", "password")
    
    Dim file() As Byte = System.IO.File.ReadAllBytes("path of file to be copied")
    
    Dim strz As System.IO.Stream = request.GetRequestStream()
    strz.Write(file, 0, file.Length)
    strz.Close()
    strz.Dispose()
    

    这对我有用。

    【讨论】:

    • 我认为您编写此代码是为了上传到服务器,而不是为了下载。你已经使用了 System.Net.WebRequestMethods.Ftp.UPLOADFILE 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2011-08-04
    • 2012-01-09
    • 2012-08-18
    • 2020-05-25
    相关资源
    最近更新 更多