[PHP-users 25045] ファイルの場所を隠す&読み込みながら書き出し

萩原 kahos @ mcn.ne.jp
2005年 3月 23日 (水) 11:23:38 JST


こんにちは、初めまして萩原といいます。
今日MLに入会した新米ですがよろしくお願いします。

ファイルのDLの際、ファイルの置いてある場所を知られないようにしたいと考え
過去ログを調べてDLの際にPHPを経由して header を使えばできそうかなと思い
素人考えで下記の通りやってみました。

ttp://test.jp/img/001.jpg  (例)
ttp://test.jp/dl.php?file=001.jpg

<?php    //dl.php
$file = $_GET['file'];
$path = "./img/$file";
header("Content-Disposition: attachment; filename=$file");
readfile($path);
?>

私の環境では上手く動作しているのですがこれで場所を知られずにすむでしょうか?

又、上記のreadfileの場合ファイルサイズが大きくなるととても重くなってしまいます。
過去ログ([PHP-users 10754])に”読み込みながら、書き出せば良いのではないですか?”
という指摘がありましたがこれをどう実現していいのかわからずに困っています。

意味も理解できずに readfile 部分を

>$fp = fopen($path,"r");
>fpassthru($fp);
>fclose($fp);

としてやってみましたがファイルサイズが大きい場合は、まるでテキストエディタで
数十メガあるファイルを読んでいるときのように重くなりました。
PHPを経由することでサーバ側の負担はかなり大きくなってしまうのでしょうか?
改善する良いアドバイスがありましたらよろしくお願いします。


PHP-users メーリングリストの案内