0

私の質問は、すべてのファイル タイプに対してヘッダー ダウンロード PHP メソッドを使用する方法があるかどうかです。

    <?php

$fileid = $_GET['fid'];
$filename = $_GET['fn'];
 $auth_code = $_GET['dlauth'];
$folder = $_GET['fi'];
echo $file = $folder."/".$filename;

if (empty($fileid) || empty($filename) || empty($auth_code) || empty($folder)) {

    echo "Malformed ID, please go back and try to download again";

    } else {

        if (strlen($auth_code) > 25) {

            echo "Download session has expired or is malforned";

            }  else {






  header("Content-Disposition: attachment; filename=$filename");

  header('Content-Length: ' . filesize($file));
  header("Pragma: no-cache");
  header("Expires: 0");

  readfile($file);





                }



        }

?>

これはzipファイルなどをダウンロードするため、まったく問題ありません。ただし、それ以外の場合は、破損するだけです。

ファイル拡張子を持つコンテンツ タイプを決定するために switch ステートメントを使用しなくても、誰もが何らかの手がかりを得ました。

ありがとう!

4

3 に答える 3

1

本当にPHPでそれをしなければなりませんか?.htaccessそうでない場合は、これに対処するためにa を使用することをお勧めします。

AddType application/octet-stream .csv
AddType application/octet-stream .xls
AddType application/octet-stream .doc
AddType application/octet-stream .avi
AddType application/octet-stream .mpg
AddType application/octet-stream .mov
AddType application/octet-stream .pdf

Content-Typeそれ以外の場合は、ファイルの種類が何であれ、を設定することをお勧めします。

于 2012-06-03T18:32:08.823 に答える
0
header("Content-Disposition: attachment; filename=$filename");

暗号化されていない接続でダウンロードを強制するのに十分なはずです。通常どおりに設定しContent-Typeます (例: image/jpeg)。残りは必要ないか、必要に応じて Web サーバーによって設定されるべきではありません。

于 2012-06-03T18:23:02.517 に答える
0

ファイル情報拡張子を使用して実行できます。

http://www.php.net/manual/en/ref.fileinfo.php

于 2012-06-03T18:34:21.340 に答える