Проблемы со списком файлов с FTPWebRequest

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

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

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

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

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


person Matt    schedule 21.06.2011    source источник


Ответы (1)


Я написал 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

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

person Kyle Undefined    schedule 21.06.2011