tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^5: ファイルアップロード
投稿日: 2010/03/03(Wed) 18:26
投稿者魔界の仮面弁士
> アップロード先(フォルダ?ディレクトリ?)へのファイルの
> 書き込みがOKという条件の下では、アップロードは可能なのでしょうか?
基本的には可能です。

そのサーバーに対して、(マイ)ネットワーク からアクセスできる場合には、
 FileCopy "C:\WebRoot\index.html", "\\ServerName\Site1\index.html"
のようにしてファイルをコピーしたり、あるいは
Put # ステートメント等を通じて保存したりすることができます。
家庭内サーバーの場合やイントラネットの場合には、これで十分でしょう。


また、FTP で公開されているサイトの場合、Inet コントロール
(Microsoft Internet Transfer Control 6.0) を利用できます。
たとえば、私の使っている Web サイトでは、
  C:\InetFTP.txt
というファイルを
  http://www.vb-user.net/junk/replySamples/2010.03.03.18.43/InetFTP.txt
で公開するために、上記 URL に示した VB6 コードを利用できます。

Inet の使い方については、ヘルプの目次から、下記の項目を辿ってみてください。
 [Visual Basic ドキュメント
 └[Visual Basic の使用方法]
  └[コンポーネント ツール ガイド]
   └[ActiveX コントロールの使い方]
    └[ActiveX コントロールの使い方]
     └[インターネット トランスファ (Inet) コントロールの使い方]
(ただし、一部のFTP サーバーでは、Inet の機能で対応しきれない事もあります)



そのほか、WebDAV をサポートしたサイトにおいては、ADODB というライブラリを通じて
ファイルのアップロード、削除、ダウンロード等が可能です。
http://msdn.microsoft.com/ja-jp/library/cc426829.aspx
http://support.microsoft.com/kb/245359/ja
また、使用している OS によっては、Web フォルダの機能を通じて、
\\foo.example.com\test\example.html などのパスに対して、
通常のファイル入出力命令を利用できる可能性もあります。
(ただし、WebDAV を公開しているサーバーは、そう多くはありません)


その一方で、標準機能だけでは実装が難しいケースもあります。
たとえば FTPS は、VB6 の Inet ではサポートされていないので、実装するには
有償/無償の外部ツールなどの助けを借りる必要があるかも知れません。
(なお VB2005 以降では FTPS での通信もサポートされています)


>(こちらにはサーバの仕様は記述されていないのですが、なくて大丈夫なのでしょうか?)
強いて言えば、Text1.Text に指定される http 云々という部分がそれにあたります。

すなわち、「ファイルをダウンロードしたい」という話ではなく、
「HTTP を利用して、Web サーバー上のファイルをダウンロードする」
という仕様になっています。


> この逆のことがやりたいということです。
話はそう簡単では無いのです。

ほぼすべての Web サーバーが、HTTP での通信をサポートしていますが、
それはあくまでダウンロードの場合の話です。アップロードの方法については、
サーバーによってサポートしている方法が異なるため、統一的にはいきません。

たとえば、FTP でのアップロードにのみ対応しているようなサーバーもあれば、
画像掲示板や一部の blog サイトなどのように、ブラウザ等から
HTTP でアップロードできるサーバーもあります。一部の blog サイトでは、
携帯電話から送ったメールを、HTML として構築するような所さえあります。

なので、アップロード先のサーバーがどの方式を採用しているかを
調べることが最優先かと思います。


> 申し訳ございません。プロトコルの意味がわかりません(調べておきます。)
広い意味を持つ言葉なので、きちんと調べようとするとややこしいですが、
大雑把にいえば、『通信に必要な手順/決まりごと』の事です。


互いの機器やデータ/信号の仕組みがバラバラでは、通信はできません。
たとえば
 携帯電話から FAX を流す事はできませんし、
 テレビでラジオを受信する事はできませんし、
 メール送信ソフトで Web の閲覧もできません。
という事はわかりますよね。TV を見るためにラジオを組み立てる人は居ません。
機器(ハードウェア)が違っていても、プログラムが違っていても、
正しく通信を行うことはできないわけです。

それと同じで、アップロードならアップロードのための手順が必要であり、
それぞれのサーバーが、どの方式を採用しているかを調べないと、
プログラムの組みようが無いという事です。


Web の閲覧に使われている HTTP  は、"Hyper-text Transfer Protocol"。
それのセキュリティ強化版 HTTPS は、"Hypertext Transfer Protocol over Secure Socket Layer"。
HTTPでファイル管理を行う WevDAVは、"Web-based Distributed Authoring and Versioning"。
ファイル転送に利用される FTP   は、"File Transfer Protocol"。
それのセキュリティ強化版 FTPS  は、"File Transfer Protocol over SSL/TLS"。
メール送信に使われている SMTP  は、"Simple Mail Transfer Protocol"。
メール受信に使われている POP3  は、"Post Office Protocol Version 3"。
ターミナルサービスで使う RDP   は、"Remote Desktop Protocol"。
Windows ファイル共有なら SMB   で、"Server Message Block"。

他にも多くのプロトコルがあり、主目的は違えど、いずれもネットワーク上で
データを受け渡す際に使う事ができます。しかし、それぞれ別の通信手順であるため、
それぞれに異なるプログラムが必要になるわけです。


> で、話がそれてしまっているのですが、
それているわけではなく、そこが重要な所なのです。
仕様が決まらないうちに、開発を進めることはできません。

Web サーバーは、御自身で(自宅等に)用意する予定でしょうか?
それとも、どこからのプロバイダー等からレンタルされますか?


御自身で管理されているサーバーであれば、どのようにも設定できるので
> サーバの仕様は手段に相当するものですので、
> 目的にあった仕様で考えて欲しかったです。
と言うこともできますが……恐らくは既に設定済みの Web サーバーに
間借りする事になりますよね。

であれば、そのサーバーの通信方法は既に(サーバー管理者が)設定済みで、
あるさんは、それに従ったプログラムを用意しなければならないわけです。

言い換えれば、その仕様に沿ったアプリを作る事こそが「目的」であり、
それをどのような VB コードで実現するかという部分が「手段」です。

まずは、これから利用しようとしている Web サーバーの管理者に、
HTML ファイル等を配置する方法を確認してみてください。
サーバーによって、どのような方式が採用されているかは異なりますが、
FTP や FTPS が採用されるケースが多いかと思います。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。