Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Forzare download pdf

  1. #1

    Forzare download pdf

    Ragazzi devo forzare lo scaricamento di un pdf, apposta di farlo aprire con il browser, ho fatto cosi:

    Codice PHP:
    <?php
    include 'include/db.inc.php'
    $query=mysql_query("Select * from promo order by data asc limit 1");
    while(
    $array=mysql_fetch_array($query)){
    $volantino $array['volantino'];
    }

    $file $volantino;

    // verifico che il file esista
    if(!file)
    {
      
    // se non esiste chiudo e stampo un errore
      
    die("Il file non esiste!");
    }else{
      
    // Se il file esiste...
      // Imposto gli header della pagina per forzare il download del file
      
    header("Cache-Control: public");
      
    header("Content-Description: File Transfer");
      
    header("Content-Disposition: attachment; filename= " $file);
      
    header("Content-Transfer-Encoding: binary");
      
    // Leggo il contenuto del file
      
    readfile($file);
    }
    ?>
    Solo che nel momento in cui lo scarico, lo scarica danneggiato, cioè non riseco più ad aprirlo, come posso risolvere?

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    manca un header

    Codice PHP:
     header("Content-Type: application/pdf"
    Non so cosa tu estragga dal db, ma di solito per creare dei pdf programmaticamente
    è necessaria un'apposita classe, tipo fpdf.

    Ciao

  3. #3
    Mi da sempre lo stesso errore perchè? io sono sicuro che file.pdf funzioni perchè l'ho creato io. Dal db estraggo il file che è .pdf, ovviamente estraggo il percorso, ma non capisco perchè appena cerco di fare il download, lo scarica ma lo scarica danneggiato, se invece lo vedo dal browser si vede perfetto.

  4. #4
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Fai un esempio di valore che potrebbe contenere $volantino?

  5. #5
    $volantino contiene "http://www.**********.it/./uploads/221789Test.pdf"

  6. #6
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    come immaginavo, probabilmente è un problema di allow-url-fopen.
    Devi verificare se la tua configurazione di php ti permette di aprire file remoti.

    Prova questo codice

    Codice PHP:
    $handle fopen("percorso-file-remoto""r"); 
    Ti restiruisce errori?

    Ciao

  7. #7
    ma il path del file deve essere un path fisico sul tuo server non un url. E poi la verifica che fai dell'esistenza del file non ha senso: non stai verificando che il file esista ma che la variabile file sia valorizzata.

    Imposta il path del file pdf tipo:
    $_SERVER['DOCUMENT_ROOT'] . '/myFiles/myPdf.pdf';

    ciao

  8. #8
    Mi da questo errore:

    Warning: fopen() [function.fopen]: http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /home/mhd-01/www.******.it/htdocs/test/test.php on line 8

    Warning: fopen(http://www.********.it/test/admin/./...7353Test_2.pdf) [function.fopen]: failed to open stream: no suitable wrapper could be found in /home/mhd-01/www.**********.it/htdocs/test/test.php on line 8

  9. #9
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Esattamente

    Se hai la possibilità ( i permessi ) devi modificare il valore di allow-url-fopen, dobrebbe essere 0, metti 1.

    Puoi provare a modificare questo valore solo per lo script corrente utilizzando ini_set

    Codice PHP:
    ini_set('allow_url_fopen'1
    per verificare se il valore è stato modificato, quantomeno per lo script corrente, dopo il codice di qui sopra usa

    Codice PHP:
    var_dumpini_get('allow_url_fopen') ); 
    Se è sempre 0 non hai l'autorizzazione e dovrai agire diversamente.

    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    18
    ciao Razorblade,

    io purtroppo non ho l'autorizzazione ad usare ini_set('allow_url_fopen', 1), sennò lo abiliterei solo per la pagina del download.
    Però posso abilitare 'allow_url_fopen' dal Control Panel.
    È pericoloso farlo? Hai qualche consiglio?

    Grazie per l'aiuto,
    Billi

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.