Se faccio l'url per un file zip il href
di un collegamento e clicco sul link, il mio file zip viene scaricato e aprendolo ottiene il contenuto come mi aspetto.L'apertura del file zip scaricato crea un file cpgz?
Ecco che HTML:
<a href="http://mysite.com/uploads/my-archive.zip">download zip</a>
Il problema è che vorrei il collegamento a punto per la mia applicazione in modo tale che ho potuto determinare se l'utente è autorizzato ad accedere a questo file zip.
così Vorrei che il mio HTML essere questo:
<a href="/canDownload">download zip</a>
e il mio PHP per la pagina /canDownload
:
//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");
}
Quindi, penso che il problema ha a che fare con il codice header()
ma ho provato un sacco di cose relative a questo sulla base di vari suggerimenti su Google e altri SO e nessuno funziona.
Se si risponde alla mia domanda, è probabile si può rispondere a questa domanda anche: Zipped file with PHP results in cpgz file after extraction
Che cos'è un file * cpgz *? – hakre
Per semplicità ho fatto riferimento ad esso come un file cpgz, ma in realtà è un file 'xxx.zip.cpgz'. Da Google, penso che sia una chiusura lampo del file zip. Sembra che sto scaricando un file il cui contenuto non può essere letto forse perché le istruzioni header() sono già state determinate da/canDownload? –
Prova a cambiare l'estensione in .txt e controlla se c'è del testo semplice. – jprofitt