Salve a tutti,
avrei bisogno di forzare il download dei miei pdf:
Ho trovato varie guide online, che funzionano perfettamente se la cartella del download si trova nello stesso ftp, tuttavia avrei bisogno di scaricare un file che si trova
su un altro server.
Vi posto il codice:
Codice:
<?php
/*
impostiamo la cartella in cui sono presenti i file per il download
*/
//$dir = "download/";
$dir = "link al sito esterno";
/*
riceviamo via GET il file da scaricare
la funzione basename la applichiamo al fine di evitare che
utenti maliziosi possano eseguire percorsi nell'URL
*/
$file = isset($_GET['file']) ? basename( (string) $_GET['file'] ) : '';
$path = $dir . $file;
/* eseguiamo alcuni controlli preventivi */
if($file==''){
exit('Nessun file indicato');
}
else if(!is_file($path)){
exit('Il file non esiste');
}
else if(!is_readable($path)){
exit('Il file non ha i permessi per essere scaricato');
}
/* otteniamo alcune info sul file */
$info = pathinfo( $path );
$extension = $info['extension']; // estensione
$size = filesize($path); // dimensione in byte
$time_file = date( 'r', filemtime( $path ) ); // time ultima modifica
/* inviamo gli opportuni headers */
/* alcuni di questi sono degli hack (trucchi)
per farlo funzionare correttamente anche su alcune versioni di IE*/
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'. basename($path) .'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . $size);
header('Last-Modified: ' . $time_file);
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
/* eliminiamo eventuale output inviato */
ob_clean();
flush();
/* leggiamo il file inviamo l'output */
@readfile($path) or die('SERVER ERROR!');
exit;
?>
ed infine l'html:
Codice:
<a href="download.php?file=file.pdf" target="_blank">SCARICA IL FILE</a>
Mi dice sempre che il file non esiste.
Consigli? 
| | |
| FTP | L'FTP (acronimo di File Transfer Protocol che in italiano sta per protocollo di trasferimento file) è un protocollo (un programma a volte) per la condivisione di file tra host. | | |
| | |
| | |
| HTML | HTML (HyperText Markup Language) nasce per mano di Tim Berners-Lee, il costruttore del primo webserver e del primo browser, come estensione di SGML (Standard Generalized Markup Language) nel 1990. | | |
| | |
| | |
| PDF | File formato che conserva documenti formattati consentendo ad utenti di visionare detti file in modo appropriato da ogni computer fornito del software Acrobat Reader sviluppato da Adobe Systems. | | |
| | |
| | |
| Server | Ogni coppia hardware-software che fornisce appunto servizi ad utenti chiamati tradizionalmente clienti (clients) attraverso una rete. | | |
| | |