VB(Access2000)でWebサーバ(アパッチ)にHTTPでファイルのアップロードをしたいのですが手順がわかりません。
何かサンプルがあれば教えてください。
以前に似たような書き込みがあったのですが、もう少し詳しいものがあれば教えてください。
http://madia.world.coocan.jp/vb/vb_bbs/200410_04100028.html
それともHttpSendRequestを用いてPOSTするのでしょうか?
すみませんがよろしくお願いします。
リンクの過去ログはただ、ファイルを受信する
スクリプト(CGI)にPostしているだけなので、
まず、ファイルを受信して保存するスクリプトが
あることが前提ではないでしょうか?
ヤマ@文系さん、回答ありがとうございます。
WebサーバにはCSVファイルをアップロードするページ(サーブレット)が既に存在するので、そのサーブレットにPOSTする予定です。
POSTする方法ですが、WININETを利用して送信しようと思います。
・InternetOpen
・HTTPConnect
・HTTPOpenRequest (POST)
・HttpAddRequestHeaders (必要なヘッダーを送信)
・HTTPSendRequest (ファイルの内容を送信)
ただ心配している点が2点あります。(まだ確認をしていないので)
① ヘルプや過去の質問を見ると「HTTPSendRequest」の引数にはByte型の配列を指定しているのですが、「Content-Disposition: form-data; name=""systemfile...」とファイルの内容を合わせた形でByte型変数にどのように設定すればよいのでしょうか?
②「HTTPSendRequest」に指定するデータはURLエンコードやBase64のエンコードを行う必要があるのでしょうか?(送信するデータはテキストデータなのでBase64のエンコードは必要ないとは思っているのですが。)
上記2点について何かご存知でしたら教えて下さい。
よろしくお願いします。
RFCをみていただくのがよいかと思います。
winsockを使った方がよいかもしれないです。
'http://madia.world.coocan.jp/vb/vb_bbs2/200210_02100021.html
Dim a() as byte
winsock1.senddata a()
1.バイト配列への文字列挿入は
a=文字列
でできます。
'http://support.microsoft.com/kb/187675/ja
2.リクエスト部分の文字列にあたる部分で2byte文字やバイナリ以外は
エンコードしなくていいのではないでしょうか。
フォームがweb上にあるのなら、
mshtml等を使って、
直接いじってやる方法が簡単かもしれないですよ。
ヤマ@文系さん、回答ありがとうございます。
(返事が遅くなりすみませんでした。)
WININETを利用してHTTPでPOSTする方法ですが、以下の方法で正常に送信することが出来ました。
・InternetOpen
・HTTPConnect
・HTTPOpenRequest (POST)
・HttpAddRequestHeaders (必要なヘッダーを送信)
・HTTPSendRequest (ファイルの内容を送信)
また、Byte配列への文字列挿入も無事挿入することが出来ました。
色々教えていただき、ありがとうございました。
ツイート | ![]() |