Проблемы со списком файлов с FTPWebRequest - PullRequest
0 голосов
/ 21 июня 2011

Я столкнулся с парой проблем при загрузке файлов на сервер vsftpd с помощью класса .NET FTPWebRequest.

Во-первых, есть ли способ вывести список скрытых файлов с помощью запроса ListDirectoryDetails?Прямо сейчас я не получаю никаких файлов / каталогов, начинающихся с ".".

Во-вторых, когда я запрашиваю список каталога с именем, начинающимся с "-", он возвращает список родительского каталога.,Например, если я запрашиваю список «/ -DIR», я получаю список «/".

. Я считаю, что эти проблемы могут быть решены, если команда« LIST -a ./ »были отправлены вместо "LIST", но попытка добавления к команде в свойстве .Method FTPWebRequest приводит к исключению (согласно документации).

Есть ли способ обойти это?Спасибо.

1 Ответ

0 голосов
/ 21 июня 2011

Я написал FTPToolkit для приложения, которое написал, и в нем перечислены все файлы и каталоги.Вот пример:

Public Function ListDirectoryDetail(ByVal directory As String) As FTPdirectory
        Dim ftp As System.Net.FtpWebRequest = GetRequest(GetDirectory(directory))
        'Set request to do simple list
        ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails

        Dim str As String = GetStringResponse(ftp)
        'replace CRLF to CR, remove last instance
        str = str.Replace(vbCr & vbLf, vbCr).TrimEnd(ControlChars.Cr)
        'split the string into a list
        Return New FTPdirectory(str, _lastDirectory)
End Function

Private Function GetStringResponse(ByVal ftp As FtpWebRequest) As String
        'Get the result, streaming to a string
        Dim result As String = ""
        Using response As FtpWebResponse = DirectCast(ftp.GetResponse(), FtpWebResponse)
            Dim size As Long = response.ContentLength
            Using datastream As Stream = response.GetResponseStream()
                Using sr As New StreamReader(datastream)
                    result = sr.ReadToEnd()
                    sr.Close()
                End Using

                datastream.Close()
            End Using

            response.Close()
        End Using

        Return result
End Function

Если вы хотите получить копию Инструментария, просто дайте мне знать.

...