Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313

    dopo estrazione da db il pdf sembra danneggiato

    Buongiorno a tutti, ho un problema in fase di estrazione file pdf da db.
    Ho strutturato il form per l'upload del file nel db
    codice:
    <html>
    	<head>
    		<title>Registrazione polizza</title>
    	</head>
    	<body>
    	<h2>Aggiungi nuova polizza</h2>
     
    		<form enctype="multipart/form-data" method="post" action="polizzaupload.php" >
    			
    			Identificativo Polizza:
    			<input type="text" name="idpolizza">
    
    			
    
    			Numero polizza:
    			<input type="text" name="numeropolizza">
    
    			
    
    			<input name="MAX_FILE_SIZE" type="hidden" value="10240000" />
    			File da caricare:
    			<input id="file" name="file" type="file" />
    
    			
    
    			Compagnia:
    			<input type="text" name="compagnia">
    
    			
    
    			Note:
    			<input type="text" name="note">
    
    			
    
    			Identificativo cliente:
    			<input type="text" name="idcliente">
    
    			
    
    			<input name="submit" type="submit" value="Carica" />
    
    			
    
    			
    		</form>
    
    	</body>
    </html>
    e successivamente la pagina php con lo script di estrazione e stampa per controllare la leggibilità del file pdf come segue nel codice:
    Codice PHP:
    <?php

        
    //Connessione al Database
        
    $connmysql_connect("localhost""root""") or die ("impossibile connettersi");

        
    //selezione del DB
        
    mysql_select_db("archiviottico"$conn) or die ("impossibile selezionare il db");
        
        if (!
    is_uploaded_file($_FILES['file']['tmp_name'])) die ("Errore di caricamento: ".$_FILES["file"]["error"]);
        
    $nome$_FILES["file"]["name"];
        
    $dimensione$_FILES["file"]["size"];
        if(
    $dimensione<10240000){

            if(
    $dimensione<0){

                echo 
    "Codice Errore: " $_FILES["file"]["error"]."";

            }else{

                
    $idpolizza$_POST['idpolizza'];
                
    $polizzafile_get_contents($_FILES['file']['tmp_name']);
                
    $polizza_db mysql_real_escape_string($polizza);
                
    $numeropolizza$_POST['numeropolizza'];
                
    $compagnia$_POST['compagnia'];
                
    $note$_POST['note'];
                
    $idcliente$_POST['idcliente'];
                
                
    $query "INSERT INTO polizza (idpolizza, nomepolizza, polizza, dimensione, numeropolizza, compagnia, note, idcliente) VALUES ('$idpolizza', '$nome', '$polizza_db', '$dimensione', '$numeropolizza', '$compagnia', '$note', '$idcliente')";
                
                
    mysql_query($query) or die ("Query non valida: " mysql_error());                
                        
                
    header("Content-Type: application/pdf");
                
    header("Content-Disposition: attachment; filename=".$nome);
                
    header("Content-Length: ".$dimensione);
                                
                echo 
    $polizza_db;
                
            }

        }else{

            echo 
    "File troppo grande!!!";

        }
    ?>
    ma il file una volta salvato sul db( e vengono salvati tutti i dati compreso il pdf) quando tento di visualizzarlo adobe mi dice che il file poterbbe essere stato danneggiato e lo stesso succede anche se provo a scaricarlo e dopo aprirlo.
    come posso risolvere questo problema?

    grazie a tutti in anticipo

  2. #2
    Ma perchè non salvi il file sul server e nel db solo i suoi riferimenti? (es. nome)

  3. #3
    Ma perchè non salvi il file sul server e nel db solo i suoi riferimenti? (es. nome)

  4. #4
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    mi sembrava più semplice visto che non sono molto pratico di php
    dici che è meglio salvare solo il nome nel db e lasciare il file in una cartella del server?
    se si come dovrei modificare il codice per rendere efficiente e funzionante questa procedura?

    grazie in anticipo

  5. #5
    La procedura è salvi il file sul server (usa ad esempio questa classe http://www.verot.net/php_class_upload.html), poi inserisci i dati nel database.
    Usare quella classe è semplice.

  6. #6
    La procedura è salvi il file sul server (usa ad esempio questa classe http://www.verot.net/php_class_upload.html), poi inserisci i dati nel database.
    Usare quella classe è semplice.

  7. #7
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Originariamente inviato da spawn88
    mi sembrava più semplice visto che non sono molto pratico di php
    dici che è meglio salvare solo il nome nel db e lasciare il file in una cartella del server?
    se si come dovrei modificare il codice per rendere efficiente e funzionante questa procedura?

    grazie in anticipo
    Te l'avevo suggerita anch'io come idea ma tu hai preferito salvarlo nel db.
    Per salvare il file sul server basta che fai così:
    move_uploaded_file ($_FILES['file']['tmp_name'], "cartella_in_cui_salvare_i_file/".$_FILES['file']['name']);
    Poi nel database hai già il campo "nomepolizza" che tiene in memoria il nome del file.

    Dopo per mostrare il file pdf puoi fare in 2 modi:
    1 (semplicissimo) - inserisci un link che punta direttamente al percorso in cui è salvato il file pdf.
    2 (per proteggere il file) - puoi vietare l'accesso diretto al file e permettere il download solo in una pagina php apposta per l'utente autorizzato.

  8. #8
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    Lo so costi mi ricordo molto bene ma pensavo fosse più semplice cmq ho inserito il codice ch mi hai scritto e mi da errore: move_upload_file(http://localhost/polizza/nome.pdf)[function.move-uploaded-file]:failed to open streamin:http wrapper does not support writeable connection in c:\xampp\hotdoc\polizzaupload.php on line 21
    Cosa può essere?

  9. #9
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Originariamente inviato da spawn88
    Lo so costi mi ricordo molto bene ma pensavo fosse più semplice cmq ho inserito il codice ch mi hai scritto e mi da errore: move_upload_file(http://localhost/polizza/nome.pdf)[function.move-uploaded-file]:failed to open streamin:http wrapper does not support writeable connection in c:\xampp\hotdoc\polizzaupload.php on line 21
    Cosa può essere?
    Ti dà errore perchè nella funzione hai inserito un percorso assoluto per il file, invece devi inserire il percorso relativo.

  10. #10
    Utente di HTML.it L'avatar di spawn88
    Registrato dal
    Feb 2012
    residenza
    Milano
    Messaggi
    313
    questo è il codice modificato ma mi sa che sbaglio ancora qualcosa:
    Codice PHP:
    <?php

        
    //Connessione al Database
        
    $connmysql_connect("localhost""root""") or die ("impossibile connettersi");

        
    //selezione del DB
        
    mysql_select_db("archiviottico"$conn) or die ("impossibile selezionare il db");
        
        if (!
    is_uploaded_file($_FILES['file']['tmp_name'])) die ("Errore di caricamento: ".$_FILES["file"]["error"]);
        
    $nome$_FILES["file"]["name"];
        
    $dimensione$_FILES["file"]["size"];
        if(
    $dimensione<10240000){

            if(
    $dimensione<0){

                echo 
    "Codice Errore: " $_FILES["file"]["error"]."";

            }else{

                
    $idpolizza$_POST['idpolizza'];
                
    $polizzamove_uploaded_file($nome, <a href="http://localhost/polizza/ . $nome">);
                
    $numeropolizza$_POST['numeropolizza'];
                
    $compagnia$_POST['compagnia'];
                
    $note$_POST['note'];
                
    $idcliente$_POST['idcliente'];
                
                
    $query "INSERT INTO polizza (idpolizza, nomepolizza, polizza, dimensione, numeropolizza, compagnia, note, idcliente) VALUES ('$idpolizza', '$nome', '$polizza', '$dimensione', '$numeropolizza', '$compagnia', '$note', '$idcliente')";
                
                
    mysql_query($query) or die ("Query non valida: " mysql_error());                
                        
                
                                
                echo 
    $polizza;
                
            }

        }else{

            echo 
    "File troppo grande!!!";

        }
    ?>
    siccome mi da errore(di sintassi):
    Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\polizzaupload.php on line 21

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.