tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルファイルアップロード
記事No14510
投稿日: 2010/03/02(Tue) 19:39
投稿者ある
VB初級レベルの者です。

「指定のURLのHTMLファイルをダウンロードする」

というサンプルがあったのですが、
その逆で「指定のURLにtxtファイルをアップロードする」
という事はできるのでしょうか?
できるのであれば、どういったサンプルになるんでしょうか?

よろしければ、お願い致します。

[ツリー表示へ]
タイトルRe: ファイルアップロード
記事No14511
投稿日: 2010/03/02(Tue) 20:02
投稿者魔界の仮面弁士
> その逆で「指定のURLにtxtファイルをアップロードする」
> という事はできるのでしょうか?
そのサーバーは、どのプロトコルでアップロードを受け付けているのでしょうか?

WebDAV でしょうか。FTP でしょうか。RFC 1867 でしょうか。
あるいは共有フォルダとかpcANYWHEREとかリモートデスクトップとか?


> できるのであれば、どういったサンプルになるんでしょうか?
サーバー側の仕様が分からないと、何とも言えません。
そもそも、外部からのファイル更新が禁止されているサーバーもあるわけですし。

[ツリー表示へ]
タイトルRe^2: ファイルアップロード
記事No14514
投稿日: 2010/03/03(Wed) 09:30
投稿者ある
> そのサーバーは、どのプロトコルでアップロードを受け付けているのでしょうか?

申し訳ございません。プロトコルの意味がわかりません(調べておきます。)
アップロードは受け付けるという前提で聞いていました。
言葉が足りなくてすみません。

> WebDAV でしょうか。FTP でしょうか。RFC 1867 でしょうか。
> あるいは共有フォルダとかpcANYWHEREとかリモートデスクトップとか?

書いてある意味が分かりません(知らない)ので調べてみます。


> サーバー側の仕様が分からないと、何とも言えません。
> そもそも、外部からのファイル更新が禁止されているサーバーもあるわけですし。

というか、ここでの目的はアップロードをするということであって、
サーバの仕様は手段に相当するものですので、
目的にあった仕様で考えて欲しかったです。
いずれにせよ私の無知と言葉が足りないせいです。すみませんでした。


以下にダウンロードのサンプルを貼っておきます。
この逆のことがやりたいということです。
(こちらにはサーバの仕様は記述されていないのですが、なくて大丈夫なのでしょうか?)
------------------------------------------------------------------------------
インターネット トランスファ (Inet)コントロール の使用例
(以下、無断転記でしたので削除しました。 2010/03/04 9:40 by ある)
        :
        :
        :

---------------------------------------------------------------------------

[ツリー表示へ]
タイトルRe^3: ファイルアップロード
記事No14515
投稿日: 2010/03/03(Wed) 10:16
投稿者花ちゃん
> 以下にダウンロードのサンプルを貼っておきます。
> Option Explicit   'SampleNo=132 WindowsXP VB6.0(SP5) 2002.05.22

ここのサンプルであれ、無断で転載される事は違法になる場合があります。
必要なら、リンクを貼るなり、引用の場合は、出典を明らかにするなり、許可を得るなり
して下さい。

>以下にダウンロードのサンプルを貼っておきます。
> ダウンロードしたいファイル名に画像ファイルを指定すれば画像もDLできます。

>この逆のことがやりたいということです。

一般的にWEB上で表示されているものは、ダウンロード(キャッシュや履歴に保存)して
いる事になりますから当然プログラムからダウンロードできますが、ここのホームページ
に貴方が勝手ファイルをアップロードされたら、困りますよね、又勝手に書き換えたり
削除したら違法になりますよね。(ハッカー行為)
掲示板等許可した場所等へは、書き込めるように設定してあるから書き込めますが
ファイル等のアップロードは、他人(許可されていない人)にされないような仕組みに
なっております。
この逆がメールのシステムですよね。メールサーバーへアップロード(送信)は可能だが、
他人のメールをダウンロード(受信)する事ができない。(できるが、したら違法)

従ってアップロードする場合は、アップロード先の指定された方法でアップロードする
必要がある為に、色々確認されておられたのです。

[ツリー表示へ]
タイトルRe^4: ファイルアップロード
記事No14516
投稿日: 2010/03/03(Wed) 10:45
投稿者ある
> ここのサンプルであれ、無断で転載される事は違法になる場合があります。
> 必要なら、リンクを貼るなり、引用の場合は、出典を明らかにするなり、許可を得るなり
> して下さい。

そうですね、大変申しわけありませんでした。


> 一般的にWEB上で表示されているものは、ダウンロードしている事になりますから
> 当然プログラムからダウンロードできますが、
> (中略)
> 従ってアップロードする場合は、アップロード先の指定された方法でアップロードする
> 必要がある為に、色々確認されておられたのです。

いろいろ勉強になります。
私が無知なのでいろいろと余計な事をさせてしまいすみません。


で、話がそれてしまっているのですが、
アップロード先(フォルダ?ディレクトリ?)へのファイルの
書き込みがOKという条件の下では、アップロードは可能なのでしょうか?
また可能であればどう書けばよいのでしょうか?

他に何か必要な事はありますでしょうか?


?ばっかりですみませんが、よろしければお教え下さい。

[ツリー表示へ]
タイトルRe^5: ファイルアップロード
記事No14517
投稿日: 2010/03/03(Wed) 11:00
投稿者花ちゃん
>そうですね、大変申しわけありませんでした。
だったら削除しておいて下さい。
それと、ここの「初めにお読みください」をよく読んでおいて下さい。

> アップロード先(フォルダ?ディレクトリ?)へのファイルの
> 書き込みがOKという条件の下では、アップロードは可能なのでしょうか?
> また可能であればどう書けばよいのでしょうか?
>
> 他に何か必要な事はありますでしょうか?

だから、そのサーバーの仕様によって色々違ってくるからと回答されておられたと
思いますが、読まれましたか?
又、アップロードする目的等によっても色々変わってくるでしょうし、まず、フリーの
FFFTP 等を使って試して見て下さい。
 http://www.forest.impress.co.jp/lib/inet/servernt/ftp/ffftp.html

同様のものを自分で作るなら、ここのNo.441 のように、BASP21 を使って作るとか。

[ツリー表示へ]
タイトルRe^6: ファイルアップロード
記事No14518
投稿日: 2010/03/03(Wed) 11:54
投稿者ある
> だったら削除しておいて下さい。

すみません、後で削除しておきます。

> それと、ここの「初めにお読みください」をよく読んでおいて下さい。

長くて難解ですのでまだ全部読みきれてないですが、
読み終わったらまた質問してみます。

> だから、そのサーバーの仕様によって色々違ってくるからと回答されておられたと
> 思いますが、読まれましたか?
> 又、アップロードする目的等によっても色々変わってくるでしょうし、まず、フリーの
> FFFTP 等を使って試して見て下さい。
>  http://www.forest.impress.co.jp/lib/inet/servernt/ftp/ffftp.html

もちろん読んでいます。
結局、この掲示板では分からないということになりそうですが、
頑張っていろいろ調べてみます。

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

[ツリー表示へ]
タイトルRe^6: ファイルアップロード
記事No14520
投稿日: 2010/03/05(Fri) 09:29
投稿者ある
魔界の仮面弁士さま

いろいろありがとうございます。
まだ細かくは読みきれていませんがとても勉強になってます!

これから深く読み解いていきますが、
感触としては、ftpを使う方法ができそうなので
まずは勉強がてらそちらで試してみます。

サーバの仕様自体はまだ決まってというか知らされておらず、
(残念ながら私は口出しできる立場ではないので・・・)
決まってからその仕様で作っていくことになりそうです。

[ツリー表示へ]