C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: VB.NETによる、FTP接続について


(過去ログ 73 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■42964 / inTopicNo.1)  VB.NETによる、FTP接続について
  
□投稿者/ 初心者さん (2回)-(2009/10/25(Sun) 11:53:54)

分類:[VB.NET/VB2005 以降] 

お世話になっております。
VB.NETによる、FTP接続について初心者のため調べてもどうしても判りません。
ご教授いただけますでしょうか。

《環境》
言語:VS2005 (VB.NET)
サーバOS:UNIX

《質問前提/背景》
FtpWebRequestオブジェクトを生成し、
該当のファイルのURL(※1)を指定してファイルを取得しようとしましたが、以下のようなエラーが返却されてエラーが発生してしまいました。
※1 FFFTPなどのフリーツールで該当ファイルのURLをクリップボードでコピーする、で取得したものです。

【エラーメッセージ】
「リモート サーバーがエラーを返しました: (550) ファイルが使用できません (例: ファイルが見つからない、ファイルへのアクセスがない)」

そこで、インターネットエクスプローラのアドレス欄にURLを貼り付けてみたところ、
同じように「このフォルダのアクセス権が許可されているか〜」というように警告されました。

《質問》
ここで質問なのですが、
FFFTPやPerlでのNet::FTP(可能かどうか試してみました)によるFTP操作では可能だが、IEやFtpWebRequestでは操作できない理由とは何なのでしょうか?

そもそもアクセス方法が違う、等のご意見はあるかと思いますが、

@ IEやFtpWebRequestではアクセス権がない理由、
A 上記の問題点を解決したVB.NETによるFTPファイルダウンロード方法、
B 贅沢を言うようで申し訳ありませんがVB.NETにてFTP接続後、カレントディレクトリの変更方法

をご教授いただけたら幸いです。
色々と無知なため、ご面倒をおかけしますがよろしくお願いいたします。
引用返信 編集キー/
■42965 / inTopicNo.2)  Re[1]: VB.NETによる、FTP接続について
□投稿者/ オショウ (356回)-(2009/10/25(Sun) 13:21:27)
No42964 (初心者さん さん) に返信
> 《質問》
> ここで質問なのですが、
> FFFTPやPerlでのNet::FTP(可能かどうか試してみました)によるFTP操作では可能だが、IEやFtpWebRequestでは操作できない理由とは何なのでしょうか?
>
> そもそもアクセス方法が違う、等のご意見はあるかと思いますが、
>
> @ IEやFtpWebRequestではアクセス権がない理由、
> A 上記の問題点を解決したVB.NETによるFTPファイルダウンロード方法、
> B 贅沢を言うようで申し訳ありませんがVB.NETにてFTP接続後、カレントディレクトリの変更方法
>
> をご教授いただけたら幸いです。
> 色々と無知なため、ご面倒をおかけしますがよろしくお願いいたします。

  ただ単に、anonymous 設定かそうでないか・・・と言うことだと思いますが。

  FTPも認証を行う設定がありますので、anonymous(匿名)接続を許可する・しない
  の設定がありますので、ID/PWDが必要なだけかと・・・

  FTPなら・・・
  http://dobon.net/vb/dotnet/internet/index.html

  ここが参考になりませんか?

以上。
引用返信 編集キー/
■42982 / inTopicNo.3)  Re[2]: VB.NETによる、FTP接続について
□投稿者/ 初心者さん (3回)-(2009/10/26(Mon) 10:00:51)
2009/10/26(Mon) 10:01:29 編集(投稿者)

>   ただ単に、anonymous 設定かそうでないか・・・と言うことだと思いますが。
>
>   FTPも認証を行う設定がありますので、anonymous(匿名)接続を許可する・しない
>   の設定がありますので、ID/PWDが必要なだけかと・・・

◆オショウ様

ご返信ありがとうございます。
ただ、ログイン時には以下のロジックのようにID/PWを設定してログインしているため、
anonymousでログインしているとは思えないのですが、当方の認識違いでしょうか。


Dim u As New Uri("ftp://XXX.XXX.XXX.X/XXX/XXXX/XXXXX")
'ダウンロードしたファイルの保存先
Dim downFile As String = "C:\test.txt"

'FtpWebRequestの作成
Dim ftpReq As System.Net.FtpWebRequest = _
CType(System.Net.WebRequest.Create(u), System.Net.FtpWebRequest)
'ログインユーザー名とパスワードを設定
ftpReq.Credentials = New System.Net.NetworkCredential("admin", "pass")

'MethodにWebRequestMethods.Ftp.DownloadFile("RETR")を設定
ftpReq.Method = System.Net.WebRequestMethods.Ftp.DownloadFile
'要求の完了後に接続を閉じる
ftpReq.KeepAlive = False
'ASCIIモードで転送する
ftpReq.UseBinary = False
'PASSIVEモードを無効にする
ftpReq.UsePassive = False

'FtpWebResponseを取得
Dim ftpRes As System.Net.FtpWebResponse = _
CType(ftpReq.GetResponse(), System.Net.FtpWebResponse)


........

また、IEではブラウザのアドレス欄にサーバのIPだけを指定して、右クリックでログイン方法を設定でログインしても、
「pub」フォルダだけが表示されるだけで、それより下層、上層にアクセスできません。
これがご指摘のanonymousでのログインということなのでしょうか??

引用返信 編集キー/
■42989 / inTopicNo.4)  Re[3]: VB.NETによる、FTP接続について
□投稿者/ オショウ (358回)-(2009/10/26(Mon) 12:06:40)
No42982 (初心者さん さん) に返信
> 'ログインユーザー名とパスワードを設定
> ftpReq.Credentials = New System.Net.NetworkCredential("admin", "pass")

  なので、anonymousではないですネ!(こういうことは最初に書いてもらわないと!)

> Dim u As New Uri("ftp://XXX.XXX.XXX.X/XXX/XXXX/XXXXX")

  この方法が適していないように思われます。
  IBMのホストならOKなんですが、ファイルの存在する階層のファイルに直接アクセス
  するような書式なので、できないFTPサーバーも当然あります。

> また、IEではブラウザのアドレス欄にサーバのIPだけを指定して、右クリックでログイン方法を設定でログインしても、
> 「pub」フォルダだけが表示されるだけで、それより下層、上層にアクセスできません。

  右クリックでログイン?
  一般的には、認証のダイアログが表示されて、ID/PWD入力して・・・の流れだと思います
  が、書かれているログイン方法は、聞いたことないです・・・

  で、pubから移動できないのは、IDに権限が無いのか、そういうインターフェースでは、
  FTPサーバー側が対応していないだけだと思います。

※ FFFTPなら問題ないんデスヨネ?
  なら、ソケット通信での低レベルな方法で、FTPさせるしか無いように思います。

  たまたまですが、FTPをソケット通信で行うコードは書いて持ってます。
  そうしないと、.NET Frameworkで提供されているクラスでは、正常に動作
  しないサーバーも存在しますので。

以上。参考まで
引用返信 編集キー/
■42990 / inTopicNo.5)  Re[1]: VB.NETによる、FTP接続について
□投稿者/ ヴァン (28回)-(2009/10/26(Mon) 12:26:09)
No42964 (初心者さん さん) に返信

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1232096452?fr=chie_ansrcmd_sq-2

引用返信 編集キー/
■42991 / inTopicNo.6)  Re[2]: VB.NETによる、FTP接続について
□投稿者/ HiJun (138回)-(2009/10/26(Mon) 13:39:41)
URL指定ではなく、IP指定にしても駄目ですか?
引用返信 編集キー/
■43006 / inTopicNo.7)  Re[3]: VB.NETによる、FTP接続について
□投稿者/ 初心者さん (4回)-(2009/10/26(Mon) 17:47:57)
皆様、ご返信ありがとうございます。

◆オショウ様
>   この方法が適していないように思われます。
>   IBMのホストならOKなんですが、ファイルの存在する階層のファイルに直接アクセス
>   するような書式なので、できないFTPサーバーも当然あります。

> ※ FFFTPなら問題ないんデスヨネ?
>   なら、ソケット通信での低レベルな方法で、FTPさせるしか無いように思います。

ftpWebCrientでは実装できないんですね。。
ご教授ありがとうございます。ソケット通信の方法を調べてみようと思います。


> 右クリックでログイン?
>   一般的には、認証のダイアログが表示されて、ID/PWD入力して・・・の流れだと思います
>   が、書かれているログイン方法は、聞いたことないです・・・

自分はIE6.0を利用しているのですが、以下の方法で試したところ、サーバに接続できた、、と考えました。(早計かもしれません)
@ IE6.0ブラウザのアドレス欄に「ftp://XXX.XXX.XXX.X/」を入力後(←サーバIPだけです)、Enter
→画面上に「pub」フォルダが表示される。
A マウス右クリックすると、「ログイン方法」というメニューがあるので、それを選択
→ID/パスワードを入力するダイアログが表示される。
B ID/PW入力後、FFFTPで取得したURLをIEのアドレス欄に入力後、Enter
 →「アクセス権、またはファイルが見つかりません」と警告される。

ちなみに、そのpubフォルダにテキストファイル(test.txt)を試しにおいて、
先述のコードの部分を「ftp://XXX.XXX.XXX.X/pub/test.txt」と変更して試してみたところ、ファイルGETできてしまいました。


◆ヴァン様
> http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1232096452?fr=chie_ansrcmd_sq-2

Yahoo知恵袋については、ご指摘のとおり自分の書き込みになります。
どうしても調べてもできなくて気になって気になって色々なところに質問していました。すみません。

◆HiJun様
> URL指定ではなく、IP指定にしても駄目ですか?

残念ながら、「XXX.XXX.XXX.X」と指定してみましたが、「名前空間を解決できない」というエラーが発生してしまいました。
引用返信 編集キー/
■43010 / inTopicNo.8)  Re[4]: VB.NETによる、FTP接続について
□投稿者/ オショウ (359回)-(2009/10/26(Mon) 18:27:10)
No43006 (初心者さん さん) に返信
> ちなみに、そのpubフォルダにテキストファイル(test.txt)を試しにおいて、
> 先述のコードの部分を「ftp://XXX.XXX.XXX.X/pub/test.txt」と変更して試してみたところ、ファイルGETできてしまいました。

  /pub にだけ、アクセス権がある・・・
  と言う結果だと思いますが、

  FFFTPでは、他の階層への読み書きはOKだったのかどうか・・・
  と言うことを聞きたかったのですが。

  それがNGの場合、ソケット通信で行ってもNGですネ!

※ FFFTPは、残念ながら私は使いません・・・いろいろ過去に問題があったようなので。
  IBMホスト等でも使えるRootFTPを使って実験してました。まだ入手可能かは未確認です。
  一応、VISTAでも動作してます。Win7では未確認。

以上。参考まで
引用返信 編集キー/
■43029 / inTopicNo.9)  Re[5]: VB.NETによる、FTP接続について
□投稿者/ 初心者さん (5回)-(2009/10/27(Tue) 12:43:27)
◆オショウ様

> FFFTPでは、他の階層への読み書きはOKだったのかどうか・・・
> と言うことを聞きたかったのですが。

OKでした。
少しソケット通信での取得方法を検討してみようと思います。

> IBMホスト等でも使えるRootFTPを使って実験してました。まだ入手可能かは未確認です。

ご紹介ありがとうございます。
ダウンロードしてみましたが、使いやすそうですね。


このままスレッドが長くなってしまうと申し訳ないので、いったんCloseとさせていただきます。
皆様、ありがとうございました!
解決済み
引用返信 編集キー/
■43043 / inTopicNo.10)  Re[3]: VB.NETによる、FTP接続について
□投稿者/ こあら (55回)-(2009/10/27(Tue) 18:02:45)
No42982 (初心者さん さん) に返信
> ただ、ログイン時には以下のロジックのようにID/PWを設定してログインしているため、
> anonymousでログインしているとは思えないのですが、当方の認識違いでしょうか。

遠い記憶なので、間違っていたらごめんなさい

WebRequest.CreateのコンストラクタでUriを指定した場合に使用されるユーザー情報は、
WebRequest.Credentialsではなく、WebRequest.RequestUri.UserInfoだったような気がします。
WebRequest.RequestUri.UserInfoは、Uriのコンストラクタでユーザー名とパスワードを埋め込んで設定します。
> Dim u As New Uri("ftp://username:password@XXX.XXX.XXX.X/XXX/XXXX/XXXXX")

これでダメなら、WebRequest.Create("ftp://XXX.XXX.XXX.X/XXX/XXXX/XXXXX")を使用してみて下さい。
こちらはWebRequest.Credentialsで認証されたように記憶しています。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -