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);





                }



        }

?>

因为这会下载压缩文件等,所以非常好。但是,当涉及到其他任何事情时,它只会腐败。

任何人都可以在不使用 switch 语句来确定文件扩展名的内容类型的情况下获得任何线索。

谢谢!

4

3 回答 3

1

你真的必须用PHP来做吗?如果没有,那么我建议使用 a.htaccess来处理这个问题:

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)。其余的不是必需的,也不需要由您的网络服务器根据需要设置。

于 2012-06-03T18:23:02.517 回答
0

可以使用文件信息扩展名来完成。

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

于 2012-06-03T18:34:21.340 回答