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.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage