Öffnen der heruntergeladenen zip-Datei erstellt cpgz-Datei?

Wenn ich die URL für eine Zip-Datei mache diehref Wenn Sie auf einen Link klicken, wird meine ZIP-Datei heruntergeladen und beim Öffnen wird der erwartete Inhalt angezeigt.

Hier ist das HTML:

<a href="http://mysite.com/uploads/my-archive.zip">download zip</a>

Das Problem ist, dass der Link auf meine Anwendung verweisen soll, damit festgestellt werden kann, ob der Benutzer berechtigt ist, auf diese ZIP-Datei zuzugreifen.

Deshalb möchte ich, dass mein HTML folgendermaßen aussieht:

 <a href="/canDownload">download zip</a> 

und mein PHP für die/canDownload Seite:

//business logic to determine if user can download

if($yesCanDownload){

$archive='https://mysite.com/uploads/my-archive.zip';
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=".basename($archive));
header("Content-Length: ".filesize($archive));
ob_clean();
flush();
echo readfile("$archive");
}   

Ich denke also, das Problem hat mit dem zu tunheader() Code, aber ich habe eine Reihe von Dingen ausprobiert, die damit zusammenhängen, basierend auf verschiedenen Google- und anderen SO-Vorschlägen, und keine funktionieren.

Wenn Sie meine Frage beantworten, können Sie wahrscheinlich auch diese Frage beantworten:Eine komprimierte Datei mit PHP führt nach dem Extrahieren zu einer cpgz-Datei

Antworten auf die Frage(6)

Ihre Antwort auf die Frage