2011-06-21 3 views
0

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

まず、ListDirectoryDe​​tailsリクエストを使用して隠しファイルをリストする方法はありますか?今は "/"で始まるファイルやディレクトリがありません。

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

"LIST -a /ディレクトリ"&gt "コマンドが単に" LIST "の代わりに送信されたが、FTPWebRequestの.Methodプロパティでコマンドに追加しようとすると、例外が発生するドキュメントごとに)。

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

答えて

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 

ツールキットのコピーを入手したい場合は、私に知らせてください。