[リストへもどる]
一括表示

投稿時間:2003/08/05(Tue) 11:19
投稿者名:
URL :
タイトル:
inetを使用してhttpでファイルアップロード
[OSのVer]:WindowsXP    [VBのVer]:VB6

はじめまして。どうすればいいか分からないので質問します。
inetを使用してhttpでファイルをダウンロードする方法はわかるのですが、
ファイルアップロードする方法がわかりません。
よろしくお願いします。

投稿時間:2003/08/05(Tue) 14:45
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: inetを使用してhttpでファイルアップロード
> inetを使用してhttpでファイルをダウンロードする方法はわかるのですが、
> ファイルアップロードする方法がわかりません。

ダウンロードできるのなら、アップロードもできるはずですが?
Execute メソッドとPutコマンドを使用して下さい。(ヘルプ参照)

    With Inet1
        .URL = "ftp://www.****.****.**"
        .UserName = "*********"
        .Password = "*********"
        .Execute , "put c:\test.txt test.txt"
        Do While .StillExecuting = True
            DoEvents
        Loop
    End With

投稿時間:2003/08/05(Tue) 17:36
投稿者名:
URL :
タイトル:
Re^2: inetを使用してhttpでファイルアップロード
> ダウンロードできるのなら、アップロードもできるはずですが?
> Execute メソッドとPutコマンドを使用して下さい。(ヘルプ参照)

返事ありがとうございます。
ftpではなくhttpでファイル送信は出来ないのでしょうか?

投稿時間:2003/08/05(Tue) 20:09
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: inetを使用してhttpでファイルアップロード
> ftpではなくhttpでファイル送信は出来ないのでしょうか?

httpによるファイル送信の方法としては、
  RFC2518 (HTTP Extensions for Distributed Authoring)
とか、あるいは
  RFC1867 (Form Based File Upload)
などが利用できます。

しかし、Inetコントロール(のhttp機能)では、バイナリデータを送信する事ができないので、
テキストファイルならば送信できますが、バイナリファイルの送信は難しいです。


もし、バイナリファイルを、「Inetコントロールを使って、httpでアップロードしたい」
という事であれば、例えば、ファイルの内容を(BASE64とかISHとかで)テキスト化し、
それを送出するような、独自の通信手順を用意する事になるでしょう。
もちろん、サーバ側の対応も必要ですが…。

投稿時間:2003/08/06(Wed) 11:27
投稿者名:
URL :
タイトル:
Re^4: inetを使用してhttpでファイルアップロード
> しかし、Inetコントロール(のhttp機能)では、バイナリデータを送信する事ができないので、
> テキストファイルならば送信できますが、バイナリファイルの送信は難しいです。
>
> もし、バイナリファイルを、「Inetコントロールを使って、httpでアップロードしたい」
> という事であれば、例えば、ファイルの内容を(BASE64とかISHとかで)テキスト化し、
> それを送出するような、独自の通信手順を用意する事になるでしょう。
> もちろん、サーバ側の対応も必要ですが…。

花ちゃん、魔界の仮面弁士さん返事ありがとうございました。
やはりhttpでは難しいんですね。とりあえずftpで転送を検討中なので、
また分からないことがあったら質問させていただきます。

投稿時間:2003/08/06(Wed) 13:26
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^5: inetを使用してhttpでファイルアップロード
> やはりhttpでは難しいんですね。とりあえずftpで転送を検討中なので、
> また分からないことがあったら質問させていただきます。

http(あるいはhttps)での通信が難しいというよりは、
Inetコントロールでは、制限が多い、という意味になりますね。

Inetコントロールだと、ftpでの転送の場合にも幾らかの制限があり、
例えば「全てバイナリモードになる」という問題があります。

FTPサーバによっては、バイナリとテキストで取り扱いが変わる物もありますので、
通信先のサーバの仕様によっては、Inet以外のコンポーネントの利用も
検討した方が良いかもしれません。

投稿時間:2003/08/06(Wed) 17:03
投稿者名:
URL :
タイトル:
Re^6: inetを使用してhttpでファイルアップロード
> http(あるいはhttps)での通信が難しいというよりは、
> Inetコントロールでは、制限が多い、という意味になりますね。


Inetコントロール以外で送信する場合はどんな方法があるのですか?
何も分からず質問してすみません。

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

投稿時間:2003/08/07(Thu) 09:09
投稿者名:
URL :
タイトル:
Re^8: inetを使用してhttpでファイルアップロード
魔界の仮面弁士さん、ありがとうございます。
アドバイス頂いた方法で再度検討してみます。