2016-04-07 18 views
0

サーバからダウンロードしたいファイルの名前を知っているデバイスがあるとします。PHPファイル転送

デバイスをファイルシステムにアクセスさせずに、そのファイルをそのデバイスに転送するにはどうすればよいですか?例えば、私は「something.zip」のためのget要求を受けたページping.phpがあるとし

ping.phpがsomething.zipの場所(サーバのファイルシステム上のどこかを)知っているが、

ユーザーにファイルシステムへのアクセスを許可したり、ファイルの場所を知らせることはできません(wiresharkのようなものを使って誰かから隠しておく必要さえあります)。

どうすればこの問題を解決できますか?

これは簡単な解決策かもしれませんが、私はこれらの問題に精通していません。

もし何か違いがあれば、私はLinuxボックスでApacheサーバーを使用しています。

+0

これは、実際にファイルのダウンロードが実装されている標準的な方法です:あなたは、ファイルを記述したHTTPヘッダーを送信し、 PHPスクリプトによって生成された応答内のファイル内容。それで全部です。 – arkascha

答えて

3

ファイルがWeb経由でアクセスできないフォルダに置かれている間に、ファイル転送を容易にするPHPスクリプトを作成できます。これは私のシステムでファイルのダウンロードを一般的に処理する方法です。

実際のファイル転送に使用できるサンプルスクリプトがいくつでもあります。鍵は、そのファイルをWebアクセス可能なファイルシステムの外部に置くことです。完全のために

が、ここで私はPHPでファイルのダウンロードを行うために過去に使用したいくつかのコードがあります:

$filename="filetodownload.xyz"; 
$cf = realpath("/non-webaccessible-folder/".$filename); 
$file=$cf; 

header('Content-Disposition: attachment; filename="' . basename($cf) . '"'); 
header("Content-Length: " . filesize($cf)); 
header("Content-Type: application/octet-stream"); 
readfile(realpath($cf)); 
+0

申し訳ありません...私はプロダクションスクリプトからこれを奪い取り、その断片も取り除くことを忘れました。それは私の状況で必要です。 – LuvnJesus

+0

ありがとう!これは私が必要としているようです。しかし、このコードについて私には明らかではないいくつかのことがあります。 [この新しい質問](http://stackoverflow.com/questions/36499625/php-file-transfer-how-does-this-work)を参照してください。 – JEJoll