- ベストアンサー
HTTP接続
HTTPでサーバー上のファイルをダウンロードする アプリを作成中です。 HTTP接続でサーバー上のターゲットファイル名や、ファイルサイズ等を 取得したいのですが、ネット上しらべたりしたのですが、 FTP接続では同等の機能を実装したサンプルなどがあるのですが、 HTTP接続においては見当たりません。私の調べ方が悪いのかもしれませんが、 そもそも、HTTP接続において希望の処理ができるのかどうか ご教授していただけないでしょうか? ネットワークに疎いですが、早急に実装しないといけなくて 困っております。 よろしくお願いします。 VC++6.0 MFC です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
サーバ上のファイル名やファイルサイズを 取得する、というのは、大抵、できません。 できるかできないかは、サーバのセキュリティ ポリシーに依ります。 私はAPACHE系のWWWサーバしかいじったことは 無いですが,URLにファイル名が指定されていない 場合(http://channel.goo.ne.jp/news/ などの ような指定の仕方。ディレクトリ名までしか指定 していない)に、ディレクトリ内のファイルと、 配下のディレクトリ名の一覧を表示(ftpのls コマンドのように)するかどうかは、サーバの 設定に依ります。 多くの場合、そのディレクトリの中にindex.htmlと 言う名前のファイルがあればそれを表示し、なければ エラーを返す、という設定になっていると思います。
その他の回答 (3)
- alfeim
- ベストアンサー率58% (114/195)
deagleさんの言う通りサーバが返してくるのであればHEADERフィールドにのってくるはずです。 詳しくはRFC2068 HTTP/1.1を参照してください。 ネットワークでなんかする場合はRFCに該当のものがあるのが普通なので、覚えとおくと良いかと。FTPでもSMTPでもPOPでも"標準"はすべて載ってます(あくまで"標準"なので各社独自の拡張は載ってませんが)。
えとですね。 HTTP接続の場合はブラウザでやってることをまんまプログラムでやるだけなので、send でアドレスを送ると、recv にそのまま返ってきます。 HTTP はもともと、HTML を送受信する専用のプロトコルなので、ターゲットファイル名はどこからか持ってくるしかないはずですし、ファイルサイズはサーバーが返してくれないかぎり分からないはずです。 返してくれるとすれば、Content-length: ヘッダに返ってきます。
- xruz
- ベストアンサー率50% (72/143)
Java ServletではHTTPでファイルのアップロード、ダウンロードが可能です(とっても、めんどうなのですが)。 VC++はわからなくてごめんなさい(はずしてるなぁ)。
お礼
サーバー設定に依存するんですね。 丁寧な回答ありがとうございました。