Originariamente inviato da andr3a
a parte che usare una funzione forceDownload per non fare il download mi sembra un controsenso
Certo, ma un utonto è anche libero di aprire il file... E se a quel punto schiaccia "apri" e vede un errore con scritto che il file non esiste a dir poco ci rimane male e il sito non ci fa bella figura, non credi? Chi glielo spiega che dipende dal suo browser, che magari non sa nemmeno cosa significa? Lui guarda il risultato...
Originariamente inviato da andr3a
Per fare quello ce vuoi fare devi filtrare la richiesta, ovvero se clicka su download, lo scarica, se clicka su read e il file e' leggibile via browser (pdf, txt, altro) non usi la forceDownload ... ma leggi il file e metti il giusto Content e lo mostri
Prima di ricorrere alla tua funzione, avevo tradotto una mia vecchia pagina di download che avevo fatto una volta in ASP. Una bella sfilza di mime types e... e cicca! Neanche così funziona.
Take a look, magari trovi l'inghippo...
codice:
// Ricavo nome del file e percorso
$filePath=$_GET["file"];
$estensione=explode(".", $filePath);
$ext=$estensione[1];
$fileName=substr(strrchr($filePath, "/"), 1);
if (isset($_GET["nome"])) { $nomeFile=pulisciInput($_GET["nome"]).".".substr(strrchr($filePath, "."), 1); }
else { $nomeFile=$fileName; }
$mimeType="";
$mimeTypes=array();
$mimeTypes[]=array("AU", "audio/basic");
$mimeTypes[]=array("CSS", "text/css");
$mimeTypes[]=array("CSV", "text/tab-separated-values");
$mimeTypes[]=array("DOC", "application/msword");
$mimeTypes[]=array("GIF", "image/gif");
$mimeTypes[]=array("HTML", "text/html");
$mimeTypes[]=array("HTM", "text/html");
$mimeTypes[]=array("JPEG", "image/jpeg");
$mimeTypes[]=array("JPG", "image/jpeg");
$mimeTypes[]=array("KAR", "audio/mid");
$mimeTypes[]=array("M1V", "video/mpeg");
$mimeTypes[]=array("MDB", "application/msaccess");
$mimeTypes[]=array("MID", "audio/mid");
$mimeTypes[]=array("MIDI", "audio/mid");
$mimeTypes[]=array("MPE", "video/mpeg");
$mimeTypes[]=array("MPG", "video/mpeg");
$mimeTypes[]=array("MPG2", "video/mpeg");
$mimeTypes[]=array("MPEG", "video/mpeg");
$mimeTypes[]=array("MPG4", "video/mpeg");
$mimeTypes[]=array("MP4", "video/mpeg");
$mimeTypes[]=array("PDF", "application/pdf");
$mimeTypes[]=array("RMI", "audio/mid");
$mimeTypes[]=array("RTF", "text/enriched");
$mimeTypes[]=array("TIF", "image/tif");
$mimeTypes[]=array("TIFF", "image/tiff");
$mimeTypes[]=array("TXT", "text/plain");
$mimeTypes[]=array("WAV", "application/wav");
$mimeTypes[]=array("XBM", "image/xbm");
$mimeTypes[]=array("XLB", "application/msexcel");
$mimeTypes[]=array("XLS", "application/msexcel");
$mimeTypes[]=array("ZIP", "application/zip");
// Ricavo il mime type dall'estensione
foreach ($mimeTypes as $mime){
if ($mime[0]==$ext) $mimeType=$mime[1];
else $mimeType="application/octet-stream'";
}
// Leggo il file
$file_content = implode('', file($filePath));
// Invio l'header del formato di file
header("Content-Type: $mimeType");
// Specifico al browser che il file è un allegato, ovvero
// è da scaricare non da visualizzare
header("Content-Disposition: attachment; filename=$nomeFile");
// Specifico il tipo di codifica nel trasferimento
header("Content-Transfer-Encoding: binary");
// Invio il file al browser
echo $file_content;
// Esco con successo
exit(0);
Ma forse non ho capito bene io... Cosa intendi per "filtrare la richiesta"????