2012-04-09 9 views
0

私は自分のサイトにダウンロードリンクジェネレータを作成しようとしています。変数付きphpダウンロードリンク

    • ユーザーは「リストX」を書き込んで、サイトはすべてのファイルが多数を持っている
    • 指定されたディレクトリ内のすべてのファイルを一覧表示します(: は、私はそれで意味することはこれです「downloa:0から
    • ユーザタイプ)nとD 5" アップをポップボックス 『例えば
    • それは、ユーザがダウンロードを持つようにダウンロード・スクリプト
    • にスクリプトがそれを作るユーザーをリダイレクト』

私は最初にすべてのファイル名で配列を作成し、その配列の中で "download X"コマンドを実行します。

ユーザーがダウンロードスクリプトにリダイレクトすると、ダウンロードしたいファイル名の変数がダウンロードスクリプトに「POST」され、その結果ヘッダーが変更されます。だからここ

は私の二つの質問です:

1) - どのようにユーザーの入力に応じてダウンロード・スクリプトを変更できますか? 2) - 入力フィールドはすでに "$ _SERVER ['PHP_SELF']"で他の目的に使用されているので、フォームなしで変数を "POST"する方法はわかりません。

これは私の簡単なダウンロード・スクリプトです:事前に

<?php 
header('Content-disposition: attachment; filename=huge_document.pdf'); 
header('Content-type: application/pdf'); 
readfile('huge_document.pdf'); 
?> 

ありがとう!

答えて

1

何も入力しないでください。それぞれのダウンロードにクリックするリンクを作成します。リンクのURLには、ダウンロードの一意の識別子を持つクエリ文字列があります。

<a href="/path/to/downloadscript.php?id=5">Down file #6</a> 

downloadscript.phpその後、$_GET superglobalからIDになるだろうし、(あなたの例で述べたように、配列を使用して)あなたはそこから行くことができます:このような何か

<?php 
$download_id = (int) $_GET['id']; // 5 
$files = array(
    file1.pdf, 
    file2.pdf, 
    file3.pdf, 
    file4.pdf, 
    file5.pdf, 
    file6.pdf // This is the file they'll get 
); 

$filename = $files[$download_id]; 

// get the file name from your array or database 
header('Content-disposition: attachment; ' . filename=$filename); 
header('Content-type: application/pdf'); 
readfile($filename); 
?> 
+0

ファイル#5は、 'file6です。 pdf'。 –

+0

助けてくれてありがとう!簡単な質問ですが、一括ダウンロードを行うことは可能ですか?ユーザーが「download 1-5」と入力すると、id 1からid 5までのすべてのファイルがダウンロードされます。 –

+0

一括ではどういう意味ですか?一度に1つ以上ダウンロードしますか? –