2009-05-29 8 views
4

私は情報を持つPHPページと、pdfファイルなどのファイルへのリンクを持っています。ファイルタイプは、ユーザーがアップロードできるので、何でもかまいません。ファイルのダウンロードを強制する

サイトからリンクされている他のページへのリンクを強制的にダウンロードすることなく、任意の種類のファイルのダウンロードを強制する方法を知りたいと思います。私はヘッダーでこれを行うことが可能であることを知っていますが、私は私のサイトの残りの部分を壊したくありません。

他のページへのすべてのリンクはJavascriptで行われています。実際のリンクは#になります。これはおそらくOKでしょうか?

は、私はちょうど、ページ全体のために

header('Content-Disposition: attachment;) 

を設定すべきか?

+1

...:それともタイプを強制するために、このようなmod_rewriteなど、いくつかのWebサーバ機能を使用します – Seb

+0

いいえ、そうではありません.... –

答えて

11

あなたは、特定のリソースのためにこれらの2つのヘッダフィールドを送信する必要があります。

Content-Type: application/octet-stream 
Content-Disposition: attachment 

Content-Dispositionはさらにfilenameパラメータを持つことができます。

header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment'); 
readfile($fileToSend); 
exit; 

をとファイル名は、URLを介して、そのスクリプトに渡されます。

あなたは、ファイルを送信するPHPスクリプトを使用するか、これを行うことができます。私は、これはだまされやすい人でなければならないかなり確信して

RewriteEngine on 
RewriteRule ^download/ - [L,T=application/octet-stream] 
6

少し異なるスタイルと行く準備ができ:)

$file = 'folder/' . $name; 

if (! file) { 
    die('file not found'); //Or do something 
} else { 
    // Set headers 
    header("Cache-Control: public"); 
    header("Content-Description: File Transfer"); 
    header("Content-Disposition: attachment; filename=$file"); 
    header("Content-Type: application/zip"); 
    header("Content-Transfer-Encoding: binary"); 
    // Read the file from disk 
    readfile($file); 
} 
+0

ファイルを保存するように求められなくても、ファイルを自動的に保存したい場合はどうすればいいですか? – systemovich

関連する問題