我有问题强制下载存储在服务器上的zip文件。我有下面的完整脚本,这个脚本只包含函数,该函数是从一个单独的文件中调用的,其中发送了头信息。
function goZipper($files, $destination = '', $originPath = '', $overwrite = true) {
if(file_exists($destination) && !$overwrite) {
echo"File exists";
return false;
}
if(count($files)){
//create a zip archive
$zip = new ZipArchive();
$destination = $destination .'/'.'archive - '.date('m-d-Y_h:i-a').'.zip';
if($zip->open($destination, $overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true){
echo"Error opening destination";
return false;
}
foreach($files as $file){
$base = $originPath . $file;
$zip->addFile($base, $file);
}
$zip->close();
return($destination);
}
else{
return false;
}
}
function downloadZipper($fullFilePath){
$fileName = basename($fullFilePath);
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=$fileName");
header("Content-Length: " . filesize($fullFilePath));
readfile($fileName);
exit;
}
将完整服务器路径(包括文件)传递给该函数。然后,我将提取输入的基本名称提取到标题中。我无法看到任何问题。我收到错误'无法修改标题信息 - 标题已发送'