Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714

    PHP - fopen, fred, file danneggiato

    Ciao a tutti.
    Stavo cercando di salvare alcuni PDF all'interno di MySQL. L'upload funziona bene, come tipologia di campo uso "blob".
    Il problema è al momento del download. I file generati sono corrotti e a volte non si aprono neppure.

    Pensavo che il problema fosse il salvataggio, ma poi mi rendo conto eseguendo il codice:

    Codice PHP:

    $fp 
    fopen('file.pdf''r');
    $filesize filesize('file.pdf');
    $content_pdf fread($fp$filesize);
    $content_pdf addslashes($content_pdf);

    header("Content-Length: " $filesize );
    header("Content-Type: pdf");
    header("Content-Disposition: attachment; filename=file.pdf");
    echo 
    $content_pdf
    Il file risulta essere corrotto o danneggiato.
    Ho provato a giocare con gli Header, leggendo un po' di documentazione online ma niente.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mah... nel tuo esempio leggi un file dal filesystem e non dal db: come "ri-travasi" il blob su disco? cmq non è necessaria questa operazione... se memorizzi i dati sul db non serve creare un file temporaneo

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Perchè nel database non memorizzi solo l'url del file e poi fai il download tramite
    header col file ricavato dal db?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Originariamente inviato da eiyen
    mah... nel tuo esempio leggi un file dal filesystem e non dal db: come "ri-travasi" il blob su disco? cmq non è necessaria questa operazione... se memorizzi i dati sul db non serve creare un file temporaneo
    Il concetto è lo stesso, o almeno credo.
    A db faccio la select del contenuto, della size e faccio lo stesso Header. Quello che non mi convince è:

    Perche' l'esempio che ho postato non dovrebbe funzionare?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Originariamente inviato da RoTeam
    Perchè nel database non memorizzi solo l'url del file e poi fai il download tramite
    header col file ricavato dal db?
    Perchè cosi dovrei salvare una copia sul filesystem. Per esigenze tecniche e aziendali i pdf vanno storati a DB.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Intanto tu metti un "addslashes" e io pensavo fosse dovuto a una qualche elaborazione sul db... se il file è già nel filesystem ed è "originale" non devi fare alcune modifica!

    Prova con:
    Codice PHP:
    $filename 'file.pdf';
    $content_pdf file_get_contents($filename); 

    header("Content-Type: pdf"); 
    header("Content-Disposition: attachment; filename=file.pdf"); 
    print 
    $content_pdf; exit; 

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.