[PHP-users 1456] Re: ファイルのダウンロード

BAC php-users@php.gr.jp
Thu, 23 Aug 2001 19:28:54 +0900


BACです。

On Thu, 23 Aug 2001 18:38:06 +0900
Rikio Watanabe <rikio@donet-exp.co.jp> wrote:

> 渡辺@新潟です。

> ところで、PHP上でファイル関連の関数(例えばfopen)で、サーバとクライアント
> を区別する方法はあるのでしょうか?
> 
> 例えば、$targetFile(サーバ上の完全なファイルのパスが設定されている)を
> クライアント(C:\TEMP\xxxというファイル)としてダウンロードする場合、
> クライアントのファイル名は、どのように設定(取得?)すればよいのでしょう
> か?

 言葉がかなり怪しいです。サーバとクライアント、の意味は理解してますか?
fopen()でサーバとクライアントを区別、と言ってもfopen()でオープンできるの
はリモートファイルかローカルファイルです。リモートであれば自分がクライアン
ト、ローカルであれば、サーバでもクライアントでもない、ということです。

> (fopenで"C:\TEMP\xxx"を指定するとエラーになり、"/tmp/xxx"を指定すると、
> 成功します)

 それは「C:\TEMP\xxx」というファイルが存在しなくて、「/tmp/xxx」という
ファイルが存在しているからでしょう。

 言いたいことは「サーバにあるXXXというファイルを、ユーザがYYYという名前
で保存した場合、そのYYYをサーバ側から知る方法はあるか」だと思いますが、
まず、これがPHPとは「無関係の」質問であるということを理解するためにHTTP
関連のRFCを読んでください。

 PHPを使えば簡単にサーバアプリが作れる、という言葉はある意味真実だと思
いますが、それはHTTPを理解していない人でも作れる、という意味とは違います。
PHPは「今までできなかったことができるようになる」という仕組みではありま
せん。「今まで面倒だったことが簡単になる」というものです。

 HTTPの理解は必須です。ある程度までは知らなくてもできるかもしれませんが、
それはたまたま動いているだけの「偶発的なプログラム」にすぎません。

----------------------------------------------
BAC