HTTPでサーバー上のファイルをダウンロードする
アプリを作成中です。

HTTP接続でサーバー上のターゲットファイル名や、ファイルサイズ等を
取得したいのですが、ネット上しらべたりしたのですが、
FTP接続では同等の機能を実装したサンプルなどがあるのですが、
HTTP接続においては見当たりません。私の調べ方が悪いのかもしれませんが、
そもそも、HTTP接続において希望の処理ができるのかどうか
ご教授していただけないでしょうか?
ネットワークに疎いですが、早急に実装しないといけなくて
困っております。

よろしくお願いします。
VC++6.0 MFC です。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

サーバ上のファイル名やファイルサイズを


取得する、というのは、大抵、できません。

できるかできないかは、サーバのセキュリティ
ポリシーに依ります。

私はAPACHE系のWWWサーバしかいじったことは
無いですが,URLにファイル名が指定されていない
場合(http://channel.goo.ne.jp/news/ などの
ような指定の仕方。ディレクトリ名までしか指定
していない)に、ディレクトリ内のファイルと、
配下のディレクトリ名の一覧を表示(ftpのls
コマンドのように)するかどうかは、サーバの
設定に依ります。

多くの場合、そのディレクトリの中にindex.htmlと
言う名前のファイルがあればそれを表示し、なければ
エラーを返す、という設定になっていると思います。
    • good
    • 0
この回答へのお礼

サーバー設定に依存するんですね。
丁寧な回答ありがとうございました。

お礼日時:2001/08/31 10:27

deagleさんの言う通りサーバが返してくるのであればHEADERフィールドにのってくるはずです。


詳しくはRFC2068 HTTP/1.1を参照してください。

ネットワークでなんかする場合はRFCに該当のものがあるのが普通なので、覚えとおくと良いかと。FTPでもSMTPでもPOPでも"標準"はすべて載ってます(あくまで"標準"なので各社独自の拡張は載ってませんが)。

参考URL:http://www.geocities.co.jp/SiliconValley-PaloAlt …
    • good
    • 0

 えとですね。


 HTTP接続の場合はブラウザでやってることをまんまプログラムでやるだけなので、send でアドレスを送ると、recv にそのまま返ってきます。
 HTTP はもともと、HTML を送受信する専用のプロトコルなので、ターゲットファイル名はどこからか持ってくるしかないはずですし、ファイルサイズはサーバーが返してくれないかぎり分からないはずです。
 返してくれるとすれば、Content-length: ヘッダに返ってきます。
    • good
    • 0

Java ServletではHTTPでファイルのアップロード、ダウンロードが可能です(とっても、めんどうなのですが)。



VC++はわからなくてごめんなさい(はずしてるなぁ)。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「古い圧縮ファイル」の確認方法

Dドライブのディスクのクリーンアップをしたいのですが、実行できるものが、「古い圧縮ファイル」の削除しかありません。

「古い圧縮ファイル」がどのプログラムかを確認する方法を教えてください。

また、圧縮されたファイルの名前は青くなるらしいのですが、見つかりません。どうしてでしょうか
圧縮ファイルは1G弱あります。

Aベストアンサー

http://www.atmarkit.co.jp/fwin2k/win2ktips/106cleanup/106cleanup.html

初期設定では、50日以上アクセスの無かったファイルに対して、圧縮が行われます。
当然、圧縮してからでないと、ファイル名は青色にはなりませんので、ディスク・クリーンアップでの候補段階では、黒色のままです。


尚、設定によっては青色表示にならない場合も有りますけど。

http://121ware.com/qasearch/1007/app/nec.jsp?005084

QMFCのexeのプログラムを MFCのdllに書き換えたい

VC++6.0を使用しています

新規作成
MFC AppWizard(exe)
新規
OK
[ステップ1]
ダイアログベース
次へ
[ステップ2/4]
次へ
[ステップ3/4]
次へ
[ステップ4/4]
終了

で作られた、雛型のexeをそっくりMFCのDLLに書き換えたい
と考えています
exeで作られたアプリを他のユーザーがVB6.0からDLLとして呼び出したいので書き換えて欲しいと頼まれました

MFCのDLLも雛型は簡単に出来上がるのですが
以下の関数を独立したオブジェクトにして、VB6.0からDLLの関数VBFUNC1として呼び出したいのですが、VBから呼び出すと

AfxEnableControlContainer();でアサートで引っ掛かってしまいます

ダイアログを使用したMFCのEXEをDLLとして使う場合の、コーディングについてご指南ください

BOOL CAaaApp::VBFUNC1()
//BOOL CAaaApp::InitInstance()
{
  AfxEnableControlContainer();

#ifdef _AFXDLL
  Enable3dControls();
#else
  Enable3dControlsStatic();
#endif

  CAaaDlg dlg;
  m_pMainWnd = &dlg;
  int nResponse = dlg.DoModal();
  if (nResponse == IDOK)
  {
  }
  else if (nResponse == IDCANCEL)
  {
  }
  return FALSE;
}

VC++6.0を使用しています

新規作成
MFC AppWizard(exe)
新規
OK
[ステップ1]
ダイアログベース
次へ
[ステップ2/4]
次へ
[ステップ3/4]
次へ
[ステップ4/4]
終了

で作られた、雛型のexeをそっくりMFCのDLLに書き換えたい
と考えています
exeで作られたアプリを他のユーザーがVB6.0からDLLとして呼び出したいので書き換えて欲しいと頼まれました

MFCのDLLも雛型は簡単に出来上がるのですが
以下の関数を独立したオブジェクトにして、VB6.0からDLLの...続きを読む

Aベストアンサー

まず、DLLとEXEの違いについてわかっていますか?
DLLとは"他のEXEやDLLに対して機能を提供するもの"です。

単体では役に立たず、直接・間接にEXEから呼ばれて役に立つものです。

DLLを作成するには、DLLの役割を明確にしなければなりません。
通常、関数の形で提供することが多いですが、
クライアントがC++であれば、C++クラスを提供することも可能です。

この提供することを"エクスポート"と呼びます。
エクスポートするためには特別な指定が必要です。

詳細はこちらで参考になります
http://hp.vector.co.jp/authors/VA023539/tips/dll/001.htm

なお、VB6がクライアントの場合、DEFファイルも必要です。
http://www.geocities.jp/i_love_balard/myhome/vbdll.html

さらに, DLL側でメッセージ処理を行わせるには
いくつかの注意点があります。
http://msdn.microsoft.com/ja-jp/library/30c674tx.aspx

色々大変です。

ただ単にVBからVC++のアプリを呼び出したいなら
わざわざDLLにするよりも
Shell関数のほうが簡単だと思います。

http://hanatyan.sakura.ne.jp/vbhlp/tap_shell.htm

まず、DLLとEXEの違いについてわかっていますか?
DLLとは"他のEXEやDLLに対して機能を提供するもの"です。

単体では役に立たず、直接・間接にEXEから呼ばれて役に立つものです。

DLLを作成するには、DLLの役割を明確にしなければなりません。
通常、関数の形で提供することが多いですが、
クライアントがC++であれば、C++クラスを提供することも可能です。

この提供することを"エクスポート"と呼びます。
エクスポートするためには特別な指定が必要です。

詳細はこちらで参考になります
http://...続きを読む

Qファイルの圧縮方法

AVIやMPGの画像ファイルを圧縮する方法を教えてください。900mb位のファイルをCD-Rに落とし込める700mbまで圧縮したいんですが。できれば、zipやlzhなどの後で解凍しなくてはいけないような圧縮方法ではなく、多少画像が荒くなってもファイルを単純に縮小させるような方法を教えていただけると有り難いのですが。。
因みに、TMPGEncを試してみたんですが、どうもうまくいかなくて。。ファイルサイズが元のファイルより逆に大きくなってしまうんです。
すいませんが、宜しくお願いします。

Aベストアンサー

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450 450 くらいでカット。
対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331
ではでは!

追伸
カンタンにならrmファイルに変更かなあ
でも画質は落ちますよ
ネット配信 ストリーミング形式でどぞ!
RealplusG2とかRealEncoderで変換
でもaviでもないしmpegでもないですけど、どお?

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=610331

画像圧縮?くす(^^
エンコはTMPGEncやaviutlでやるのがふつーです。
ええ 絶対! 
aviutl
http://ruriruri.zone.ne.jp/aviutl/

zipとかで圧縮しても意味ありません サイズ的に。

で、TMPGEncで元より大きくなるのは問題は
コーデック、画像サイズ、 音声ファイルなど
理由はいっぱいあります。対処は類似質問みて↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=625581

だから圧縮というか再エンコードが面倒なら
ファイルをテキトーな部分でカットする方向性はどお?
CD-R 2枚に保存 450...続きを読む

Q「MFCを使用しない」から「MFCのスタティックライブラリを使用」

VC++初心者ですが、

Win32Applicationで「MFCを使用しない」で作成したプログラムが正常動作しました。 そこで
「MFCを使用しない」から「MFCのスタティックライブラリを使用」にしてビルドしたところ、リンク中に
どんどんエラーがでます。 関数関係のエラーなのですが。

(1) どうすればエラーを無くせるのでしょうか
(2) 「MFCのスタティックライブラリを使用」にするとどの様なメリットがあるのか(説明している参考URLなど)。

教えて下さい

Aベストアンサー

>(1) どうすればエラーを無くせるのでしょうか

プロジェクトを作り直すのが手っ取り早いです。ソースを修正したり、プロジェクトのリンク対処のライブラリを変更したりすれば何とかできることはできますがおすすめしません。

作り直したプロジェクトに、自分が追加ソースをコピペしていけばちゃんと動くと思います。(ウィザードが自動で追加した分も含む)

>(2) 「MFCのスタティックライブラリを使用」にするとどの様なメリットがあるのか(説明している参考URLなど)。

簡単に書くと、

メリット
・使用しない
実行ファイルサイズが小さくなる。

・使用する
実行するときにMFCのランタイムDLLが不要になる。


デメリット
・使用しない
MFCのDLLに依存するので、DLLのバージョンの違いで動作に不具合が出る可能性がある。

・使用する
実行ファイルのサイズが馬鹿でかくなる。

Qファイルの圧縮方法が解りません

窓の杜やベクター等に置かれている、フリーの圧縮、解凍ソフトをダウンロードしていますが、テキストファイルや、画像ファイルの圧縮方法が解りません。何方か教えて頂けませんか?

Aベストアンサー

ソフトの開発者のサイトで質問することをお奨めします。

ソフトごとに操作方法が異なりますので、使用しているソフト名すらない状態では誰も必要とする回答を出せません。

窓の杜やベクターでは開発者のサイトへのリンクがありますから、そこからアクセスできますよ。

Q接続されているコンピュータ名取得(MFC)

CSocketクラスを使用して、
簡易チャットを作成しました。
IPアドレスコントロールに、
対象コンピュータのIPアドレスを打ち込んで
チャットをしています。
対象コンピュータのIPアドレスの打ち込みを
省略して、接続されているコンピュータとチャットをしたいのですが、どうすればいいでしょうか?
コンピュータ名一覧を取得できる関数はありますか?
使用OS:Windows
開発環境:Visual C++.NET MFC です。
よろしくお願いします。

Aベストアンサー

Dns::GetHostByName();
Dns::Resolve();
とか
勘違いしてたらすみません

Qpsdファイルの圧縮方法

psdファイルの圧縮方法を教えてください。(基本的質問で恐縮ですが)
win98です。なお、ファイルは9MB程度ですが、圧縮したものを解凍する際、鮮明度が落ちずに元通りの画像で開けますでしょうか?

Aベストアンサー

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (デフォルトでは 1.2MB を上限として分割される。)
   (このサイズは +Lhaca で変更できる。)
 5. (4)のファイル全てを、容量を超えないようにメールに添付して送信
   する。
   (添付ファイル総数を本文に明記すること。)
 6. 受け取った側は、全ての添付ファイルを一箇所に集めて、バッチファ
   イルを実行する。
   (操作手順は、本文に明記すること。)
 7. 分割されたファイルが結合されるので、結合された圧縮ファイルを解
   凍する。
 8. 9MBのファイルが解凍されるので、作業する。


これでどうかな!?

※他の圧縮ソフトも分割機能が備わっていると思うが・・・

●大きなサイズのファイルを分割して送付

+Lhaca 1.20 デラックス版での分割方法
http://park8.wakwak.com/~app/Lhaca/

 1. インストールは、ダウンロードした Lhaca120.exe を実行する。
 2. デスクトップに作成された +Lhaca のショートカットに、
   対象のファイルをALTキーを押しながらドロップする。
 3. 保存場所を聞いてくるので、望みの場所を指定する。
   (圧縮形式は、相手が解凍できる形式を選ぶ。)
 4. 分割されたファイル群と結合用のバッチファイルが作成される。
   (...続きを読む

Qクライアント上のC++でサーバーとソケット送信

クライアント(Windows7)上でC++を使って、サーバー側(Windows)に対してデータを送りたいです
(ソケット通信?)。

サーバ受信側はC#を使ったプログラムで以下のような感じで考えてます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      int port = 2222;
      System.Net.IPAddress ip = IPAddress.Parse("127.0.0.1");
      System.Net.Sockets.TcpListener server = new TcpListener(ip, port);
      Console.WriteLine("Enter押してください");
      ConsoleKeyInfo info = Console.ReadKey();
      if (info.Key == ConsoleKey.Enter)
      {
        Console.WriteLine("サーバー待機中");
        server.Start();
        TcpClient client = server.AcceptTcpClient();

        NetworkStream ns = client.GetStream();
        StreamWriter sw = new StreamWriter(ns);

        Console.WriteLine(sw);
      }
    }
  }
}

C++のことがよくわかってないので、送信側でC++を使ってどのように
送信すればいいのかわかりません。

送信するデータはINT型で、1秒間に1回、繰り返し送ります。

よろしくお願いします。

クライアント(Windows7)上でC++を使って、サーバー側(Windows)に対してデータを送りたいです
(ソケット通信?)。

サーバ受信側はC#を使ったプログラムで以下のような感じで考えてます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      int port = 2222;
     ...続きを読む

Aベストアンサー

winsock の関数を使用します。

winsock tcp などのキーワードで、ネットを探せばサンプルはすぐ見つかります。

QNTFS圧縮したファイルを全部まとめて戻す方法

NTFS圧縮したファイルをプロパティからひとつひとつチェックをはずして戻すのではなく、圧縮されたファイルを全部まとめて元に戻す方法ってあるのでしょうか?

Aベストアンサー

圧縮を解除したいファイルを全て選択した状態で
→プロパティ→NTFS圧縮のチェックを外す→OK

それらのファイルがフォルダに入っているなら
フォルダのプロパティからやってもいい。
(サブフォルダにも適用するか尋ねられるからOKにする)

QIndy FTP サーバー上のファイルのリストについて

Indy(ver 9)のIdFTPコンポーネントを使い、ダウンロード・アプリを作っています。

FTP サーバー上のファイルのリストを取得して、新しいファイルがあればダウンロードするようにしたいと思い、Listメソッドでリストを取得していますが、その内の更新日付に「2008」のように年度が出てきません。
何か手続きが足りないと思うのですが、ご存知の方がおられましたら、ご教授のほどお願いいたします。
(例)
IdFTP1->List(AFiles,"*.txt", true);
~とリストを取得すると、AFilesには以下のようになり、年度情報がありません。
-rw-r--r-- 1 hp web 242688 dec 6 18:49 abc.txt

(PC環境)
WindowsXp Home
Borland C++Builder Pro
Indy ver.9

宜しくお願いします。

Aベストアンサー

ls の形式なんだろうなぁ.
ファイル作成 (や修正) から一定期間 (例えば 6か月) すぎるまでは, 年の情報がない代わりに時分の情報が付加されます.
言い換えれば「年の情報がなければ適切なものをつければいい」ということ.


人気Q&Aランキング