0

.NET FTPWebRequest クラスを使用して vsftpd サーバーにファイルをアップロードする際に、いくつかの問題が発生しました。

まず、ListDirectoryDe​​tails リクエストを使用して隠しファイルを一覧表示する方法はありますか? 現在、「.」で始まるファイル/ディレクトリを取得できません。

次に、"-" で始まる名前のディレクトリの一覧を要求すると、親ディレクトリの一覧が返されます。たとえば、「/-DIR」のリストを要求すると、「/」のリストが取得されます。

これらの問題は、単に「LIST」ではなく「LIST -a ./<directory>」コマンドを送信すれば解決できると思いますが、FTPWebRequest の .Method プロパティでコマンドに追加しようとすると例外が発生します (ドキュメンテーション)。

これを回避する方法はありますか?ありがとう。

4

1 に答える 1

0

私が作成したアプリ用の 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

Toolkit のコピーを入手したい場合は、お知らせください。

于 2011-06-21T16:31:08.947 に答える