2012-01-18 27 views
3

私はサーバーに保存されているが、public_htmlディレクトリには保存されていない多数のファイルがあります。考えられるのは、ログインしているユーザーが$ _SESSION変数を使用してファイルをダウンロードしてログインしているかどうかを確認できますが、他のユーザーが自分のコンピュータを使用している場合、ブラウザの履歴に直接ファイルパスが表示されず、それは公共のhtmlディレクトリの外にあるのでアクセスできません。PHPで公開されていないhtmlフォルダからファイルをダウンロード

私はこれを行うためのスクリプトが必要だと知っていますが、どこからどうやってそれを行うかを知ることはできません。

+0

どのようなコードを試してみましたか? – GordonM

+0

Gordon、私はfopen()とreadfile()を試しましたが、phpを使ってファイルシステムを操作する経験はあまりなく、関数を正しく使っているとは思いません。残念ながら、コードがうまくいかなかったときにそのコードを削除したので、投稿できません。 – egd

答えて

10

を使用するスクリプトの一部です。 EG:

$file = '/absolute/path/to/file.ext'; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
} 
+0

ありがとうございました。 – egd

0

これがpublic_htmlフォルダの外にある場合は、ファイルからfile_get_contentsへのPHPスクリプトを作成します。

は、ここで私はあなたが問題のファイルとして出力を得るためにreadfileを使用することができます

if ($type == "1" && $method == "f"){ 
    header('Content-type: application/pdf'); 
} else { 
    header('Content-type: image/jpeg'); 
} 

$fp = fopen($uploaded_dir . $result['theimage'], "r"); 
while ($data = fread($fp, 1024)){ 
    echo $data; 
} 
fclose($fp); 
関連する問題