Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Download dinamico PDF da errori solo con Firefox

    Ciao a tutti,
    ho una pagina nella quale compare un semplice pulsantino di download che fa scaricare agli utenti un documento o in formato .PDF o in .DOC (in base a ciò che carica dimanicamente il cliente dal pannellino di back-office che gli ho creato).

    Il problema è che se uso Chrome o Explorer il pulsantino riconosce perfettamente il file e l'estensione e fa il download correttamente, mentre se uso Firefox non viene riconosciuta l'estensione del file (nè del PDF nè del DOC) e mi fa scaricare un file senza estensione.

    Nel file che gestisce questo download io sto usando il seguente codice:

    codice:
    <?php
    session_start();
    if(isset($_SESSION['ID_cliente'])){
    	require_once("../amministra/config.php");
    	$documento=mysql_fetch_array(mysql_query("SELECT * FROM immagini WHERE ID = '$_GET[id]'"));
    	if($_GET['lang']=='it'){$file_download=$documento['file'];}
    	mysql_close($link);
    	$file='../images/documenti/'.$file_download;
    	//exit();
    	//header("Content-type:*");
    	header("Cache-Control: public");
            header("Content-Description: File Transfer");
    	header("Content-Disposition: attachment; filename=".$file);
    	header("Content-Transfer-Encoding: binary");
    	readfile($file);
    	exit();
    }
    ?>
    Perchè con Chrome e Explorer funziona e con Firefox no ?
    Cosa devo cambiare per far funzionare il tutto ?

    Ciao e grazie per l'aiuto

  2. #2
    Ciao cosi dovrebbe andare
    codice:
    <?php
    session_start();
    if(isset($_SESSION['ID_cliente'])){
    	require_once("../amministra/config.php");
    	$documento=mysql_fetch_array(mysql_query("SELECT * FROM immagini WHERE ID = '$_GET[id]'"));
    	if($_GET['lang']=='it'){$file_download=$documento['file'];}
    	mysql_close($link);
    	    $mime_types = array(
            "bmp" => "image/bmp",
            "exe" => "application/octet-stream",
            "html" => "text/html",
            "ico" => "image/x-icon",
            "jpeg" => "image/jpeg",
            "png" => "image/png",
            "jpg" => "image/jpeg",
            "mov" => "video/quicktime",
            "mp3" => "audio/mpeg",
            "mp4" => "video/mpeg",
            "mpeg" => "video/mpeg",
            "mpg" => "video/mpeg",
            "txt" => "text/plain",
            "wav" => "audio/x-wav",
            "zip" => "application/zip"
         );
    	 
    	$file='../images/documenti/'.$file_download;
    	$info  = pathinfo($file);
        $ext = strtolower($info["extension"]);
        $mt = isset($mime_types[$ext]) ? $mime_types[$ext] : "application/octet-stream";
    	//exit();
    	//header("Content-type:*");
    	header("Cache-Control: public");
    	header("Content-Type: {$mt}");
            header("Content-Description: File Transfer");
    	header("Content-Disposition: attachment; filename=".$file);
    	header("Content-Transfer-Encoding: binary");
    	readfile($file);
    	exit();
    }
    ?>
    Saluti
    Davide
    Davide Granata
    Web Developer
    www.davidepc.com

  3. #3
    ok provo ... grazie mille ...

  4. #4
    ciao ... ho risolto un po' più velocemente così, usando l' IF che controlla le estensioni:

    codice:
    ......
    ......
    if($ext=='docx'){header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');}	
    elseif($ext=='doc'){header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');}
    else{header("Content-type: *");}
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header('Content-Disposition: attachment; filename='.$documento['file']);
    header("Content-Transfer-Encoding: binary");
    readfile($file);
    exit();
    così funziona adesso ...

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    potresti anche associare tutto in un array cosi' puoi estendere la procedura anche per altri formati

  6. #6

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.