VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/08/06(Wed) 20:26
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^7: inetを使用してhttpでファイルアップロード

> Inetコントロール以外で送信する場合はどんな方法があるのですか?

どんなプロトコルでも良い、という事ならば、例えばメールに添付して送信するなど、
幾つかの方法が考えられますが………とりあえず、ftp や httpを使うとすれば、
以下のような物が利用できるかと思います。


Inetコントロール:
  同期モードでのアップロードに対応していない(イベントによる非同期ベース)なので
  扱いにくいという事と、先に述べたような制限に目を瞑れば、それなりに利用できます。(^^;


Winsockコントロール:
Winsock API:
  ftp/httpだけではなく、その他のTCP/IP通信にも対応させる事ができます。
  ただし、コーディング量は多くなりますし、プロトコルの詳細な仕様も
  理解しておく必要があります。基礎知識が少ない場合はお奨めしません。


basp21コンポーネント:
  フリーソフトですが、知名度が高く、業務利用される事の多いコンポーネントです。
  (製品版となる、有料の basp21 Proというコンポーネントもあります)
  「FTPオブジェクト」を使ったftp通信が可能です。また、「socketオブジェクト」に
  よって、より低レベルなTCP/IP通信もサポートされています。


InternetExplorerオブジェクト:
WebBrowserコントロール:
  httpによるフォームアップロード処理(RFC1867)に使えます。
  この場合、処理方法としては2種類あり、
    ・<form action="送信先" enctype="multipart/form-data" method="post"> な
      HTMLを表示させておき、そこからDHTMLで送信処理を行う。
    ・Navigate2メソッドの引数に、送信させるファイルの情報を渡す
  のいずれかとなります。

  前者の場合、ファイルの選択はプログラムからは制御できないため、
  ユーザーに手動でファイルを指定してもらう必要があります。

  後者の場合、任意のファイルをプログラムから指定する事ができますが、
  データのエンコーディング処理(multipart/form-data)が、
  IE側で行われないため、VB側でエンコード処理を自力実装する必要があります。


VBのファイル制御系ステートメント(FileCopy, Print#, Kill等):
  事前にエクスプローラで「Webフォルダ」の設定を行っておく必要がありますが、
  コーディングの手間は少ないです。Webフォルダが設定されている場合は、
  "\\www.microsoft.com\japan\test.txt" のような構文で、それらを
  LAN上のファイル/フォルダのように扱うことができます。
  (この時、裏側ではWebDAVによる通信が発生する事になります)
  ただし、Windowsのバージョンやセキュリティの設定などによっては、
  この方法が利用できない場合もありますので、その点は注意が必要です。


ActiveX Data Objects Version 2.5以上:
  Internet Publishing OLE DBプロバイダや、Exchange OLE DBプロバイダなどを
  利用する事で、httpサーバ上のファイルを取り扱う事ができます。
  使用するOLE DBプロバイダによって、具体的なコードは異なりますが、
  内部的には、「WebDAV」(RFC2518)が利用されます。


XMLHTTPオブジェクト:
ServerXMLHTTPオブジェクト:
  httpあるいはhttpsによる通信全般に利用できます。sendメソッドを使うと、
  http要求ボディに任意のバイト配列を渡す事もできるため、ファイルのバイナリデータを
  直接サーバに渡すような事もできます。また、WebDAVを使った通信にも利用できます。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -