タイトル | : FTPのGetFileSizeでエラーがでる |
記事No | : 10082 |
投稿日 | : 2010/04/27(Tue) 13:31 |
投稿者 | : AMI |
現在VB2005で、FTPソフトを作成しています。 アップロードされている、ファイルサイズを取得するという 単純なものです。
状況が、Aプロバイダ・Bプロバイダとあり、 同じソースで、Aでは正常に取得できますが、 Bでしますと、エラーになり、 エラー番号が「5」 メッセージが 「リモート サーバーがエラーを返しました: (550) ファイルが使用できません (例: ファイルが見つからない、ファイルへのアクセスがない)」 というエラーメッセージが表示されます。 プロバイダにより使えるコマンドがちがうのでしょうか? ちなみにA・Bともに同じ構成、ファイルアクセス権限で設定しております。
それとファイルサイズを取得する設定 'ftpReq.Method = System.Net.WebRequestMethods.Ftp.GetFileSize を ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails に変更すると、そればともにエラーがでずにファイル構成を取得できます。
Dim u As New Uri("ftp://xxx.ne.jp/www/12.log")
'FtpWebRequestの作成 Dim ftpReq As System.Net.FtpWebRequest = _ CType(System.Net.WebRequest.Create(u), System.Net.FtpWebRequest) 'ログインユーザー名とパスワードを設定 ftpReq.Credentials = New System.Net.NetworkCredential("XXXX", "○○○") 'MethodにWebRequestMethods.Ftp.ListDirectoryDetails("LIST")を設定 ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails 'ftpReq.Method = System.Net.WebRequestMethods.Ftp.GetFileSize '要求の完了後に接続を閉じる ftpReq.KeepAlive = False 'PASSIVEモードを無効にする ftpReq.UsePassive = False
'FtpWebResponseを取得 Dim ftpRes As System.Net.FtpWebResponse = _ CType(ftpReq.GetResponse(), System.Net.FtpWebResponse) 'FTPサーバーから送信されたデータを取得 Dim sr As New System.IO.StreamReader(ftpRes.GetResponseStream()) Dim res As String = sr.ReadToEnd() Dim lngFileSize As Long = ftpRes.ContentLength 'ファイル一覧を表示 Console.WriteLine(res) Label1.Text = res
|