我正在制作一个非常简单的受密码保护的“文件下载器”,它在输入密码后强制从远程服务器(mediafire)下载它似乎可以工作,但文件总是损坏,每当我尝试打开它时,windows 都会说:“ Windows 无法打开压缩(压缩)文件夹 'C:/users..' 无效的文件夹”。以下是下载脚本的代码:
$yourfile ='http://www.mediafire.com/file/filelinkhere';
ob_start();
if(isset($_POST['submit'])) {
$password = $_POST['password']; // required
if ($password <> "somepasswordhere") {
echo "<script type='text/javascript'>alert('//error: incorrect password//')</script>";
header( "Refresh:0; url=https://www.home/transfer.php", true, 303);
} else {
$filename = basename($yourfile);
header('Content-Transfer-Encoding: binary');
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="'.$filename.'"');
$size = filesize($yourfile);
header('Content-Length: '.$size.'');
readfile($yourfile);
exit;
}
}
使用来自另一个相关堆栈问题的建议,我确保 content-length 标头使用真正的字符串,因为 filesize 返回一个整数。有谁知道为什么下载仍然是腐败的?