我的问题是,有没有办法为所有文件类型使用标题下载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语句来解析带有文件扩展名的内容类型。
谢谢!
答案 0 :(得分:1)
你真的必须用PHP做吗?如果没有,那么我建议使用.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
设置为您的文件类型。
答案 1 :(得分:0)
header("Content-Disposition: attachment; filename=$filename");
应足以强制在未加密的连接上下载。像往常一样设置Content-Type
(例如image/jpeg
)。其余部分不是必需的,也不需要由您的网络服务器根据需要设置。
答案 2 :(得分:0)
可以使用文件信息扩展名完成。