Erstellen Sie eine Zip-Datei und laden Sie sie herunter
Ich versuche, 2 Dateien herunterzuladen, indem ich die Zip-Datei auf dem lokalen Server erstelle. Die Datei wird im Zip-Format heruntergeladen, aber wenn ich versuche, sie zu extrahieren, tritt ein Fehler auf:Signatur für das Ende des zentralen Verzeichnisses nicht gefunden. Entweder handelt es sich bei dieser Datei nicht um eine ZIP-Datei, oder es handelt sich um eine Platte eines mehrteiligen Archivs. In letzterem Fall befinden sich das zentrale Verzeichnis und der Zip-Dateikommentar auf den letzten Datenträgern dieses Archivs.
Den folgenden Code verwende ich dafür:
<?php
$file_names = array('iMUST Operating Manual V1.3a.pdf','iMUST Product Information Sheet.pdf');
//Archive name
$archive_file_name=$name.'iMUST_Products.zip';
//Download Files path
$file_path=$_SERVER['DOCUMENT_ROOT'].'/Harshal/files/';
zipFilesAndDownload($file_names,$archive_file_name,$file_path);
function zipFilesAndDownload($file_names,$archive_file_name,$file_path)
{
//echo $file_path;die;
$zip = new ZipArchive();
//create the file and throw the error if unsuccessful
if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )!==TRUE) {
exit("cannot open <$archive_file_name>\n");
}
//add each files of $file_name array to archive
foreach($file_names as $files)
{
$zip->addFile($file_path.$files,$files);
//echo $file_path.$files,$files."
}
$zip->close();
//then send the headers to force download the zip file
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=$archive_file_name");
header("Pragma: no-cache");
header("Expires: 0");
readfile("$archive_file_name");
exit;
}
?>
Ich habe die Werte aller Variablen überprüft, die in die Funktion übergehen. Alle sind in Ordnung. Bitte schauen Sie sich das an. Danke im Voraus.