タイトル | : Re^5: ファイルアップロード |
記事No | : 14519 |
投稿日 | : 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 が採用されるケースが多いかと思います。
|