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
a parte che usare una funzione forceDownload per non fare il download mi sembra un controsenso![]()
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.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![]()
Take a look, magari trovi l'inghippo...
Ma forse non ho capito bene io... Cosa intendi per "filtrare la richiesta"????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);
![]()

Rispondi quotando