CodingIsDreamy Ответов: 1

Как загрузить папку с ftp VB.NET


Я пробовал код который использую для загрузки файла но когда я пытаюсь загрузить папку он не работает вот код --

Public Sub CheckForUpdates()

        Dim localFile As String
        localFile = Application.StartupPath & "/Database/Sigs/"
        Const remoteFile As String = "/Database/Sigs/"

        Const host As String = "ftp://ip address"
        Const username As String = "my username"
        Const password As String = "my password"
        Dim URI As String = host & remoteFile



        Dim ftp As System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
        'Set the credentials
        ftp.Credentials = New System.Net.NetworkCredential(username, password)
        'Turn off KeepAlive (will close connection on completion)
        ftp.KeepAlive = False
        'we want a binary
        ftp.UseBinary = True
        'Define the action required (in this case, download a file)
        ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile



        Using response As System.Net.FtpWebResponse = CType(ftp.GetResponse, System.Net.FtpWebResponse)
            Using responseStream As IO.Stream = response.GetResponseStream
                'loop to read & write to file
                Using fs As New IO.FileStream(localFile, IO.FileMode.Create)
                    Dim buffer(2047) As Byte
                    Dim read As Integer = 0
                    Do
                        read = responseStream.Read(buffer, 0, buffer.Length)
                        fs.Write(buffer, 0, read)
                    Loop Until read = 0 'see Note(1)
                    responseStream.Close()
                    fs.Flush()
                    fs.Close()


                End Using
                responseStream.Close()
            End Using
            response.Close()
        End Using
    End Sub


Что я уже пробовал:

я пытался как вы можете видеть выше использовать код для получения файла но по какой то причине не работает

Richard MacCutchan

Вы не можете загружать папки таким образом, вы должны загружать каждый файл по очереди.

CodingIsDreamy

спасибо чувак

CodingIsDreamy

вы случайно не знаете, как читать весь текст из нескольких файлов My.Computer?Файловая система.ReadAllText(textfile.txt) по более чем одному. Извините за вопрос я только что видел что у вас есть ость несколько вещей которые помогли мне немного просто интересно если вы новичок

phil.o

Сначала вы должны получить список файлов на ftp-сервере; затем повторите этот список, чтобы загрузить каждый файл.

CodingIsDreamy

спасибо чувак

1 Ответов

Рейтинг:
10

Mrunal Sonawane

Эй... Как кто-то уже сказал, Вы действительно не можете загрузить папку как таковую, но вам нужно загрузить файлы один за другим. Вы можете получить список файлов из 'ListDirectory'... Может быть, попробуем вот это...

Private Shared Sub Main(args As String())
	Dim ftpRequest As FtpWebRequest = DirectCast(WebRequest.Create("ftp://mywebsite.com/"), FtpWebRequest)
	ftpRequest.Credentials = New NetworkCredential("user345", "pass234")
	ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory
	Dim response As FtpWebResponse = DirectCast(ftpRequest.GetResponse(), FtpWebResponse)
	Dim streamReader As New StreamReader(response.GetResponseStream())
	Dim directories As New List(Of String)()

	Dim line As String = streamReader.ReadLine()
	While Not String.IsNullOrEmpty(line)
		directories.Add(line)
		line = streamReader.ReadLine()
	End While
	streamReader.Close()


	Using ftpClient As New WebClient()
		ftpClient.Credentials = New System.Net.NetworkCredential("user345", "pass234")

		For i As Integer = 0 To directories.Count - 1
			If directories(i).Contains(".") Then

				Dim path As String = "ftp://mywebsite.com/" + directories(i).ToString()
				Dim trnsfrpth As String = "D:\\Test\" + directories(i).ToString()
				ftpClient.DownloadFile(path, trnsfrpth)
			End If
		Next
	End Using
End Sub

Надеюсь, это поможет...!


CodingIsDreamy

спасибо чувак

Arya Isfandiari

Эй, отличное решение!! спасибо.

netsistemas

Важно!! Будьте осторожны и поместите последнюю полосу в пути к ftp и папкам