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

    Upload file pdf in base64

    Buongiorno a tutti.
    Finora ho sempre caricato i file all'interno di una cartella, e una volta inviata la mail venivano rimossi.
    Ora è cambiata la gestione.
    In pratica, cosa dovrei fare.
    Utilizzare sempre il form per il multiupload, ma invece che caricare fisicamente il file, dentro una cartella, devo codificarlo in base64, inserirlo all'interno di un campo nella tabella del database, e poi visualizzarlo sotto forma di link in una pagina, e cliccando il link lo deve aprire come se esistesse realmente.

    Ho provato a fare la codifica i base64, ma quando vado a cliccare, non esiste.

  2. #2
    Ho risolto, in questo modo, lo script di seguito l'ho preso su un altro sito, del quale non ricordo il nome, l'ho personalizzato, aggiungendo oltre alle immagini anche il pdf, e il link "Apri", dove nella pagina vediBase64.php, copio come test, tutto il file codificato in base64 per vedere se lo apre correttamente, senza caricarlo in nessuna cartella.
    Quindi, nel caso si può commentare la parte di script relativa all'upload effettivo del file.
    Codice PHP:
    <?phpecho "Base64 is <a href='vediBase64.php' target='_blank'>Apri</a>";if(isset($_FILES['image'])){    $errors=array();    $allowed_ext= array('jpg','jpeg','png','gif','pdf');    $file_name =$_FILES['image']['name']; //   $file_name =$_FILES['image']['tmp_name'];    $file_ext = strtolower( end(explode('.',$file_name)));

        
    $file_size=$_FILES['image']['size'];    $file_tmp$_FILES['image']['tmp_name'];    //echo $file_tmp;echo "<br>";
        
    $type pathinfo($file_tmpPATHINFO_EXTENSION);    $data file_get_contents($file_tmp);    $base64 'data:image/' $type ';base64,' base64_encode($data);        echo "Base64 is ".$data;
        if(
    in_array($file_ext,$allowed_ext) === false)    {        $errors[]='Extension not allowed';    }
        if(
    $file_size 2097152)    {        $errors[]= 'File size must be under 2mb';
        }    if(empty(
    $errors))    {       if( move_uploaded_file($file_tmp'uploads/'.$file_name));       {        echo 'File uploaded';       }    }    else    {        foreach($errors as $error)        {            echo $error '<br/>';         }    }   //  print_r($errors);}?><form action="" method="POST" enctype="multipart/form-data"><p>    <input type="file" id="image" name="image" />    <input type="submit" value="Upload">
    </p></form>

  3. #3
    Piccolo inconveniente.
    Mi sono accorto che la stringa che vado ad inserire nel campo del DB, che viene generata in base_64, per il file che ho scelto di caricare, è troncata.

    Ho scelto in sequenza, tipi di dato come BLOB, MEDIUMBLOB e LONGBLOB, ma nonostante tutto viene troncata.
    Faccio qualche errore di conversione?

    Credo sia un errore di conversione, perché ho fatto questa prova.

    Ho caricato il file, convertito in base64 e inserito nel campo.
    Poi ho ricaricato lo stesso file, senza inserirlo nel campo, ma ho solo stampato la stringa che genera e termina allo stesso modo, che trovo all'interno del campo.

    Quindi, c'è un errore di partenza, nella conversione.

    Codice PHP:
    $file_tmp$_FILES['image']['tmp_name'];
    $type pathinfo($file_tmpPATHINFO_EXTENSION);
    $data file_get_contents($file_tmp);
    $base64 'data:image/' $type ';base64,' base64_encode($data);

    //stampo la stringa
    //echo base64_encode($data);

    //oppure faccio una insert
    $test->base_64_richiesta_aba(base64_encode($data),"file.pdf",$_SESSION['CODENAME'],$_SESSION['CODFABB'],$_POST['emailAddr']); 
    Grazie.
    Ultima modifica di ANTAGONIA; 09-05-2023 a 10:28

  4. #4
    in pratica non è troncata la stringa, ma gli viene aggiunta una porzione di lettere alla fine "CiUlRU9G".

    1) ultime lettere della stringa che mi stampa il file pdf: Pg0Kc3RhcnR4cmVmDQozNDI3NzEN
    2) ultime lettere della stringa che stampo a video sempre dello stesso pdf: Pg0Kc3RhcnR4cmVmDQozNDI3NzENCiUlRU9G

    Perché?

  5. #5
    Boh, adesso sembra che non generi più quella stringa anomala e quindi funziona tutto.

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,781
    non ho investigato a modo ma cercando CiUlRU9G
    saltano fuori diversi post in rete.

    potrebbe essere utile leggerli per capire da cosa è data questa "anomalia"



  7. #7
    grazie provvedo subito.

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.