いつもお世話になっています。
表題の件ですが、ファイル(JPG)をWEB上のサーバへVBでアップしたい
とがんばっています。
HTMLのページでは次のような感じです。
<HTML><HEAD><TITLE></TITLE></HEAD><BODY>
<FORM method="POST" action="http://xxxx.xxx.jp/xxxx.cgi">
<INPUT size="20" type="FILE" name="SEND_IMAGE_FINE"> ←※選択するファイル
<INPUT type="submit" value="送信"></FORM>
</BODY>
</HTML>
※選択するファイルは固定です。
C:\SAMPLE\SAMPLE1.jpg
これをVBで代替して送信したいと悩んでいます。
Dim SEND_DATA As String
Dim STR_URL As String
SEND_DATA = "IMAGE_NAME=SAMPLE1"
STR_URL = "http://xxxx.xxx.jp/xxx.cgi"
Inet1.Execute STR_URL, "POST", SEND_DATA, _
"Content-Type: application/x-www-form-urlencoded" & vbCrLf
ここでC:\SAMPLE\SAMPLE1.jpgどのように指定してよいかわかりません。
丸一日HP調べましがわかりません。何卒ご教示お願いします。
なかなかご回答がいただけないので、質問の方向を変えたいと
思います。
質問:
HTTP & POST でバイナリファイルを送信することができるので
しょうか?SMTPなどでは、BASE64でデータを変換する必要があ
ると認識しています。ただIEの場合、簡単にファイルを送信
できるのですが(<input type="file">)やっぱりASCへの変換
をIEで自動的に行っているのでしょうか。
受取側でファイルに落とすにはバイナリに変換する必要がある
とおもうのですが。
CGIは送り手側の変換方式(BASE64等々)
を認識しないとバイナリへ復号化することはできないんではな
いでしょうか。受取側はどうやって送り手側の変換方式を認識
できるんでしょうか??などなど疑問が一杯です。
どうか御教示お願いします。
> なかなかご回答がいただけないので、
<form enctype="multipart/form-data">
<p><input type="file"></p>
</form>
での転送をプログラム的に行うのは、手順が少々面倒なので、
回答を控えていました…。(^^;
とりあえず、変換手順については RFC 2388 を参照してみてください。
http://www.ietf.org/rfc/rfc2388.txt
http://www.studyinghttp.net/rfc_ja/rfc2388.ja
実際に流れるデータについては、フリーソフトのInetSpy等にて
確認する事ができます。
> 表題の件ですが、ファイル(JPG)をWEB上のサーバへVBでアップしたい
> とがんばっています。
アップロード先のサーバー側の設定はどうなっているのでしょうか?
確かに、<input type="file">というHTML要素は用意されていますが、
サーバー側がそれに対応しているかどうかは、別の問題ですよね。
# FTPのみの対応をうたっているサーバーもあるでしょうし。
> HTTP & POST でバイナリファイルを送信することができるのでしょうか?
POST に拘らないのであれば、PUT を使うことはできませんか?
たとえば最近の環境ならば、サーバ側がWebDAVに対応している場合、
FileCopy "C:\TEST.JPG", "\\127.0.0.1\folder\test.jpg"
のように、普通のネットワーク共有のようにして扱うだけで、
自動的に HTTP PUT にてファイルが送られますよ。
> HTTP & POST でバイナリファイルを送信することができるのでしょうか?
httpでのやり取りを行うのは、XMLHttpRequest (XMLHTTP) を使うのが
簡単です。Microsoft XML Parser を参照設定して、こんな感じですね。
Dim B() As Byte
Dim oHttp As XMLHTTP
B = 送信データ
Set oHTTP = New XMLHTTP40 'MSXML4の場合
XMLHTTP.Open "POST", URL, False
XMLHTTP.Send CVar(B)
この場合はファイルのバイナリをそのまま送っているだけですが、
必要に応じて、適切なエンコードを施せば、WebDAV も扱えますし、
<input type="file"> 相当の処理にも利用できます。
# 以前、某所に書いたサンプル。
# http://www.users.gr.jp/ml/archive/viewer.aspx?name=vb&no=9563
# WebDAV の例。
# http://support.microsoft.com/kb/296713/ja
魔界の仮面弁士様、いつも親切なご回答ありがとうございます。
早速ご指導いただいた内容での勉強をはじめたいと思います。
取り急ぎお礼まで。
ツイート | ![]() |