【发布时间】:2016-09-14 10:59:53
【问题描述】:
我已经使用此代码成功下载了 pdf 文件。我正在使用相同的代码下载包含 exe 的 zip 文件(只需更改文件名并将 mime 类型更改为 application/zip),当我尝试打开下载的文件时出现此错误: “Windows 无法打开该文件夹。 压缩(压缩)文件夹“[文件名]”无效”
我验证了原始未压缩文件可以运行,并且我可以在我的笔记本电脑上成功解压缩文件夹并运行exe。
我还通过 Filezilla 将 zip 文件从我的网站下载到一个临时文件夹,解压缩并运行它,以确保上传没有问题。
这是一个 70 MB 的文件,所以我尝试下载一个 65 kb 的压缩 exe --- 同样的错误。
我添加了 header("Content-Length: " . $file_size),即使没有它的 pdf 下载也很好 --- 同样的错误。
我尝试了 application/octet-stream --- 同样的错误。
有什么想法吗?任何建议表示赞赏。
$file_size = filesize($file_path);
$file = @fopen($file_path,"r");
if ($file)
{
header("Pragma: public");
header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename=\"$file_name\"");
//header("Content-Length: " . $file_size);
header("Content-Type: " . $ctype);
set_time_limit(0);
fseek($file, 0);
while(!feof($file))
{
print(@fread($file, 1024*8));
ob_flush();
flush();
if (connection_status()!=0)
{
@fclose($file);
exit;
}
}
@fclose($file);
}
【问题讨论】:
-
您使用的是什么操作系统?视窗XP?什么协议? http 还是 https?
-
你为什么要阅读分块的 zip-flie?无法执行 readfile($zipfile) 任务?
-
Windows 7 专业版,http
-
我在这里media-division.com/…找到了这段代码,它的目的是提供字节范围支持。也许它是矫枉过正,但它没有造成任何伤害,所以我离开了。
-
我也尝试下载一个未压缩的 exe,当我点击下载的文件时出现此错误:“此文件的版本与您正在运行的 Windows 版本不兼容。请检查您的计算机系统信息以查看您是否需要 x86(32 位)或 x64(64 位)版本的程序,然后联系软件发行商。”