2012-02-12 11 views
5

Ho bisogno di aiuto con un problema in uno strumento che sto sviluppando.Forza il download dal server esterno e rinomina

Ho bisogno di scaricare un file esterno e rinominarlo, ma senza usare readfile(), file_get_contents() o fread() (i file sono troppo grandi per leggerli sul server e scaricarli di nuovo sul PC visitatore).

ho provato prima con:

Codice:

header("Location: http://www.example.com/example_download.zip"); 

Si lavora per il download, ma non per la ridenominazione example_download.zip.

Così ho provato con readfile():

Codice:

header("Content-Disposition: attachment; filename="example_download_2.zip"\n\n"); 
header("Content-Type: application/force-download"); 
    readfile("http://www.example.com/example_download.zip"); 
    exit; 

Con il codice precedente funziona bene, il download remoto prima sul server, rinominandolo e dopo l'invio a il visitatore con il nuovo nome, ma l'utilizzo delle risorse di questo processo è molto alto, e anche l'utilizzo della larghezza di banda.

Quindi sto cercando un modo per generare un download forzato di un file esterno, rinominandolo al volo e generando un download con il nuovo nome ma scaricandolo direttamente dalla sorgente. È possibile?

Grazie in anticipo Saluti

+0

Se il client sta per scaricare direttamente dalla sorgente, quindi no, non c'è modo di dargli un nuovo nome. – drew010

+0

http://stackoverflow.com/questions/541265/renaming-file-on-another-server-as-user-downloads-it-2-using-php – FeRtoll

risposta

2

E 'impossibile per voi di fare questo. Se lo script php reindirizza il client a un altro URL, allora tutte le intestazioni HTTP vengono lasciate al nuovo script url per decidere. Devi scaricarlo per rinominarlo.

4

HTML5 ora permette di fare ciò che si vuole attraverso l'attributo download:

<a href="http://www.example.com/example_download.zip" download="custom_filename.zip"> 
    Link 
</a> 

Ulteriori informazioni:

http://developers.whatwg.org/links.html#attr-hyperlink-download http://updates.html5rocks.com/2011/08/Downloading- resources-in-HTML5-a-download

+0

Non faccio questo funziona su un dominio o su un sotto -dominio. – Ben

+0

Funzionerà per tutti i browser e tutti i sistemi operativi? Perché, l'attributo download non funziona per il sistema operativo basato su Linux. – kalidasan

+0

Non proprio: http://caniuse.com/#feat=download – Mauro

Problemi correlati