Visual Basic: загрузка по FTP - PullRequest
0 голосов
/ 16 марта 2011

Я пробовал разные коды, и ни один из них не работает для загрузки файла из примера DriveHQ.

Но мне все же удается загрузить, так что с Хостом все в порядке.

EDIT *

sub()
  GetFile("downloadme.txt", "DESKTOP")
    End Sub

    Public Function GetFile(ByVal Name As String, ByVal DestFile As String) As Boolean
        Dim oFTP As FtpWebRequest = CType(FtpWebRequest.Create("ftp://ftp.drivehq.com/" & "" & Name), FtpWebRequest)
        oFTP.Credentials = New NetworkCredential("user", "passw")
        oFTP.Method = WebRequestMethods.Ftp.DownloadFile
        oFTP.KeepAlive = KeepAlive
        ' oFTP.EnableSsl = UseSSL
        ' If UseSSL Then ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
        oFTP.UseBinary = True
        Dim response As FtpWebResponse = CType(oFTP.GetResponse, FtpWebResponse)
        Dim responseStream As Stream = response.GetResponseStream
        Dim fs As New FileStream(DestFile, FileMode.Create)
        Dim buffer(2047) As Byte
        Dim read As Integer = 1
        While read <> 0
            read = responseStream.Read(buffer, 0, buffer.Length)
            fs.Write(buffer, 0, read)
        End While
        responseStream.Close()
        fs.Flush()
        fs.Close()
        responseStream.Close()
        response.Close()
        oFTP = Nothing
        Return True
    End Function

    Public Function ValidateServerCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As SslPolicyErrors) As Boolean
        If sslPolicyErrors = sslPolicyErrors.RemoteCertificateChainErrors Then
            Return False
        ElseIf sslPolicyErrors = sslPolicyErrors.RemoteCertificateNameMismatch Then
            Dim z As System.Security.Policy.Zone = System.Security.Policy.Zone.CreateFromUrl(CType(sender, HttpWebRequest).RequestUri.ToString)
            If z.SecurityZone = System.Security.SecurityZone.Intranet Or z.SecurityZone = System.Security.SecurityZone.MyComputer Then
                Return True
            End If
            Return False
        End If
        Return True
    End Function

// Simon

1 Ответ

0 голосов
/ 16 марта 2011

Получаете ли вы сообщение об ошибке или оно просто не выполняет то, что вы ожидаете? Вы создаете FileStream и указываете его на файл с именем DESKTOP, это то, что вы на самом деле намеревались сделать, или это просто пример?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...