HTTPでファイルのアップロードについて

解決


tasuro  2006-12-14 09:18:17  No: 97401

VB(Access2000)でWebサーバ(アパッチ)にHTTPでファイルのアップロードをしたいのですが手順がわかりません。
何かサンプルがあれば教えてください。

以前に似たような書き込みがあったのですが、もう少し詳しいものがあれば教えてください。
http://madia.world.coocan.jp/vb/vb_bbs/200410_04100028.html

それともHttpSendRequestを用いてPOSTするのでしょうか?

すみませんがよろしくお願いします。


ヤマ@文系  2006-12-16 06:54:17  No: 97402

リンクの過去ログはただ、ファイルを受信する
スクリプト(CGI)にPostしているだけなので、
まず、ファイルを受信して保存するスクリプトが
あることが前提ではないでしょうか?


tasuro  2006-12-17 10:22:47  No: 97403

ヤマ@文系さん、回答ありがとうございます。
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点について何かご存知でしたら教えて下さい。
よろしくお願いします。


ヤマ@文系  2006-12-18 00:25:01  No: 97404

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文字やバイナリ以外は
エンコードしなくていいのではないでしょうか。


ヤマ@文系  2006-12-18 00:42:37  No: 97405

フォームがweb上にあるのなら、
mshtml等を使って、
直接いじってやる方法が簡単かもしれないですよ。


tasuro  2006-12-29 10:59:41  No: 97406

ヤマ@文系さん、回答ありがとうございます。
(返事が遅くなりすみませんでした。)

WININETを利用してHTTPでPOSTする方法ですが、以下の方法で正常に送信することが出来ました。
  ・InternetOpen
  ・HTTPConnect
  ・HTTPOpenRequest (POST)
  ・HttpAddRequestHeaders (必要なヘッダーを送信)
  ・HTTPSendRequest (ファイルの内容を送信)

また、Byte配列への文字列挿入も無事挿入することが出来ました。

色々教えていただき、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加