• ベストアンサー

FTPを使わないファイルアップロード

「とほほのWWW入門」にある、wwwupl2 を使ってブラウザからWWWサーバへ ファイルをアップロードしています。 http://tohoho.wakusei.ne.jp/how2/tec1.htm#upload VB からこの CGI へ命令(?)を渡し、ユーザには VB の画面だけを表示させておいて、 裏で CGI によるファイルのアップロードをさせることはできるのでしょうか? つまり、ファイルを指定して送信ボタンを押すという動作を自動化+非表示にさせたいのです。 FTP を使えば解決するのですが、FTPアカウントは 1つしか無い為、 VB 中にアカウント情報を記述するのが怖いのです。 開発環境はVB6、サーバはレンタルサーバです。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

ブラウザを使用したアップロードは、httpのputです。 なのでVBで実現可能です。

yabudoctor
質問者

お礼

ご回答ありがとうございます。 調べてみましたが、どのようにすればいいのかわかりませんでした。 具体的なコードややり方があるとありがたいのですが、お教え頂けないでしょうか?

その他の回答 (6)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.7

後は動くサンプルを見つければ解決でしょう。 http://www.google.com/search?hl=ja&q=VB+HTTP+POST+%22multipart%2Fform-data%22&lr=lang_ja basp21を使うのが簡単そう。

参考URL:
http://www.google.com/search?q=VB+HTTP+POST+%22multipart%2Fform-data%2
yabudoctor
質問者

お礼

お教え頂いたbasp21を中心に調べていたところ、BFup ActiveX コントロールを使うことによりアップロード出来ました! http://www.hi-ho.ne.jp/babaq/bfup.html 皆様のおかげで解決しました。 ありがとうございました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.6

>の2.受信データの構造にあるバイナリデータを送る >場合のデータをCGIに送ってあげれば >(つまり、回答No.2補足のコードのPostDataに代入) >よいのではと考えているのですが、いかがでしょうか? よさげですけど、まず確認事項としてPOSTのデータがcgiで受信できるかを確認するのが先かと。 form-dataではない、単純なデータをPOSTしてcgiでデータが受け取れているかを確認してみてください。

yabudoctor
質問者

補足

ご回答ありがとうございます。 単純なデータを行ごとに処理をしてVBからCGIへPOSTしてみたところ、無事に受け取れました。 通常のhtmlと同じ挙動です。 後はバイナリファイルをデコードできれば出来そうな気がしたので調べてみましたが、いくら調べても見つかりませんでした。 皆様のおかげで着実に進んでいます。 もう少しお付き合い下さい。

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.5

aspじゃダメなんでしょうか? レンタルサーバーだとダメかな?

参考URL:
http://www.dolphinnetservice.ne.jp/AcrobatASP/4.html
yabudoctor
質問者

お礼

ご回答ありがとうございます。 現在借りているレンタルサーバはASPは利用できないのです。 他に方法はありませんでしょうか?

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

putじゃなくてpostでしたね。すみません。 WebBrowserコントロールを使った.NETのサンプルですけど、ほとんどVB6と一緒です。 http://support.microsoft.com/default.aspx?scid=kb;ja;311294 #動作は未確認です。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;311294
yabudoctor
質問者

補足

ご回答ありがとうございます。 こちらもいろいろ試してみましたが、アップロードが出来ませんでした。 VBからCGIを動かすところまではうまく行っているので http://www.hk.airnet.ne.jp/~ahero/cgi/cgiex11.html の2.受信データの構造にあるバイナリデータを送る場合のデータをCGIに送ってあげれば(つまり、回答No.2補足のコードのPostDataに代入)よいのではと考えているのですが、いかがでしょうか? この方法はそもそもコードの書き方がわかりません。 もしお分かりになりましたらお教えいただけないでしょうか?

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

HTTPのPUTなら簡単でしょうけど、HTTPのPOSTは大変ですね。 ↓が使えるかも。

参考URL:
http://www.pstruh.cz/tips/detpg_uploadvbaie.htm
yabudoctor
質問者

お礼

ご回答ありがとうございます。 お教え頂いた情報を元に数日間試行錯誤してみましたが、 できませんでした。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>具体的なコードややり方があるとありがたいのですが、お教え頂けないでしょうか? 具体的に、VBのどのような機能でftpで送信しようとしていたのですか? Inetコントロール?IternetAPI?Winsockコントロール?

yabudoctor
質問者

補足

ご回答ありがとうございます。 現在は WebBrowserコントロール(?)で実験中です。 下記の html と同じ動きをさせたいと思っていますが、submit ボタンを押す動作は成功しているようなのですが、データが送れていません。 html ここから ------------------------------------------------------ <form method="POST" enctype="multipart/form-data" action="wwwupl2.cgi"> <div>ファイル1:<input type="file" name="FILE_A"></div> <div><input type="submit" value="転送"></div> </form> html 終わり -------------------------------------------------------- VB ここから -------------------------------------------------------- URL = "http://www.***.jp/wwwupl2.cgi" ' POST を受信する URL Flags = 0 TargetFrame = "" PostData = "FILE_A=c:\********\test.csv" PostData = StrConv(PostData, vbFromUnicode) Headers = "Content-Type: multipart/form-data" & vbCrLf WebBrowser1.Navigate URL, Flags, TargetFrame, PostData, Headers VB 終わり ---------------------------------------------------------- ソースはネットで見つけたサンプルを自分なりに加工しました。 なお、Inetコントロールでは成功したのですが、これは ftpアカウント情報を 記述する必要があったので使えませんでした。 無知で申し訳ございませんが、よろしくご教授下さい。

関連するQ&A