投稿日 | : 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を使った通信にも利用できます。