Öffnen von heruntergeladenen zip-Datei erstellt cpgz Datei?

Wenn ich die url eine zip-Datei, die href einen link und klicken Sie auf den link, meine zip-Datei heruntergeladen, und öffnen Sie bekommt die Inhalte, die ich erwarte.

Ist hier, dass HTML:

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

Das problem ist, ich möchte den link zu zeigen auf meine Bewerbung, so dass ich feststellen könnte, ob der Benutzer die Berechtigung zum Zugriff auf diese zip-Datei.

so, ich würde gerne mein HTML-Code dieses:

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

und meine 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");
}   

So, ich denke, das problem hat zu tun mit der header() code, aber ich habe versucht eine Reihe von Dingen, die mit, dass basierend auf verschiedenen google-und anderen Vorschläge und keine Arbeit.

Wenn Sie meine Frage beantworten, ist es wahrscheinlich, Sie können diese Frage beantworten zu: Zip-Datei mit PHP Ergebnisse in cpgz-Datei nach der Extraktion

  • Was ist eine cpgz Datei?
  • Der Einfachheit halber habe ich bezeichnete es als eine cpgz-Datei, aber es ist tatsächlich ein xxx.zip.cpgz - Datei. Von google, ich denke, es ist ein komprimieren der zip-Datei. Es scheint, ich bin das herunterladen einer Datei, deren Inhalt nicht gelesen werden kann, vielleicht, weil die header () - Anweisungen waren bestimmt schon um /canDownload?
  • Versuchen Sie, die Erweiterung zu .txt und sehen, wenn Sie nur-text in es.
  • also du meinst https://mysite.com/uploads/my-archive.txt?
  • Ich meine, nachdem Sie die Datei heruntergeladen haben, ändern Sie die Erweiterung auf .txt und öffnen Sie es.
  • danke @jprofitt ich denke, Sie sind auf das problem, als ich öffnete die zip-Datei als txt -, bekam ich folgende Fehlermeldung: Cannot modify header information - headers already sent by
  • Das heißt, es ist ein anderer code in Ihr Programm, das senden der Ausgabe (oder Header), bevor Sie anrufen header() hier. Es gibt wohl einige Fehler oder einige andere Ausgabe, bevor Sie den code, den Sie geschrieben.
  • ja, Sie sind richtig, der erste Fehler ist filesize() [<a href='function.filesize'>function.filesize</a>]: stat failed for https://mysite.com/uploads/my-archive.php<. Es sieht so aus header() and filesize() Probleme sind Sekundär um die eigentliche Frage, die so rufen Sie die zip-Datei von meinem s3-bucket, immer noch auf der Suche durch die AWS PHP-SDK...
  • Die SDK ist der Weg zu gehen; Sie können einfach kopieren Sie das Archiv vorübergehend auf dem lokalen server und bekommen dieses Problem geschlossen (dh, beseitigen Sie alle Fehler außer AWS), und dann versuchen Sie, hinzufügen von AWS-code, um die remote-Aufruf. Falls Sie noch Fragen gibt, sollten Sie öffnen eine andere Frage

InformationsquelleAutor tim peterson | 2012-07-15
Schreibe einen Kommentar