• User Attivo

    Upload Immagine MySql

    Salve ragazzi, avrei bisogno di un aiuto.
    Mi servirebbe uno script completo PHP per l'upload immagine in database (almeno 4 formati e magari con ridimensionamento automatico), e conseguente script per la visualizzazione, in funzione dell'id utente, nella pagina del profilo.
    Uso Easy php come database.
    Avete qualcosa di gia' fatto?
    Grazie in anticipo.


  • Super User

    Ciao, non si registrano mai delle immagini all'interno del DB. Solo il path al file.

    M.


  • User Attivo

    Ciao, dopo un po' ci sono riuscito, solo per farti presente che e' possibilissimo se si utilizza un campo di tipo Blob all interno del quale caricherai un immagine in formato binario per poi successivamente estrarla decodificandola tramite php. A questo punto viene riportata in formato originale e stampata a video.
    Ti saluto, grazie mille per avermi risposto e spero in futuro di poterti essere utile.


  • Super User

    Ciao, io non ho detto che non si può, ho detto che non si deve.

    M.


  • User Attivo

    ops scusa nn avevo capito e come mai nn si deve fare, so che ci sono problemi di sicurezza facendo cosi, ma nn sono ferrato in materia puoi darmi qualche delucidazione? Io uso il db solo per le immagini di profilo nn per foto od altro puo' andare bene?
    Scusami se ti rompo 😞


  • User Attivo

    Non si dovrebbe fare perchè andresti ad appesantire inutilmente il db.


  • User Attivo

    Salve ragazzi,

    Visto che l'argomento interessa anche a me, ho provato vari esempi su initernet riguardanti gli upload di foto, ma non osno riusciuto a trovarne uno decente. Vi spiego il mio problema, sperando che qualcuno di voi mi possa aiutare. Il punto è questo. Ho un db, che è composto da due campi:

    1. id
    2. Titol
    3. Immagine (che sarebbe il link dell'immagine).

    Mi servirebbe uno script che mi permetta di caricare le foto selezionando il tasto ctrl + tasto dx del mouse (quindi selezione multipla), e assegnare ad ogni foto il titolo della foto. In unltimo poterle vedere in miniatura. La cartella dove dovrebbe contenere le foto, si chiama "Foto". tente presente che sono la maggioranza foto scannarizzate e foto da macchinetta digitale quindi pesantine in teoria. Non ci dovrebbero essere limiti di megabyte. Mi potete dare una mano per favore ?????? Un'ultimka cosa, ci dovrebbe essere mi sembra che si chiami thumb qualcosa (non ricordo bene) per vederle in miniature e poi cliccarci sopra e vederle in grandezza naturale. Grazie infinite.


  • User Attivo

    Salve ragazzi,

    Ritorno sulla discussione dell'upload immagini. Allora ho del codice da postare, vorrei una mano per poterlo modificare al meglio. Mi spiego meglio. La mia intenzione è quella di creare delle thumb una volta caricate le immagini che si possono visualizzare sotto forma di album e poi cliccarci sopra, per intenderci un po' come fa fb. Ovviamente solo la memorizzazione del link, per non appesantire il db. Una cosa dal semplice php si può trasformare il codice che posterò ora in un filee dinamico ??? Credo che il dinamicismo dei siti, serva per accelerare il tutto o sbaglio ???? Ecco a voi il codice:

    index.php

    [PHP]

    <script >

    lì ho dovuti togliere perchè da fastidio al sistema e non mi fa inviare il messaggio
    <script>
    function togli(x)
    {
    $('#'+x).toggle();
    var immagine = document.getElementById('hidden'+x).value;
    $.get('togli.php',{img:immagine},function(done){$('#cancella_img').html(done)});
    }

    function carica()
    {
    $.post('insert_immages.php',{fine:'yes'},function(done){$('body').html(done)});
    }

    </script>
    <?php

    require_once("connetti.php");

    #se non esistono delle cartelle le creo
    if(!file_exists('img_temp'))
    {
    mkdir('img_temp/',0777);
    }
    if(!file_exists('immages'))
    {
    mkdir('immages/',0777);
    }
    if($_POST['sub'])
    {
    #Inizializzo la cartella dove andranno a finire le imamgini
    $dir = 'img_temp/';
    #ricevo i dati delle immagini
    #$nome per il nome del file, es: pippo.jpeg
    $nome = $_FILES['file']['name'];
    #$nome_temporaneo invece per il nome temporaneo che
    #il server crea per l'immagine pippo.jpeg
    $nome_temporaneo = $_FILES['file']['tmp_name'];

    #semplicemente per far girare il codice while e leggere l'array
    $n=0;
    #finche n sarà minore delle immagini caricate, il ciclo continuer&#65533;
    while($n<count($nome))
    {
        #trovo le informazioni , come: l'altezza, la larghezza e il sorgente delle immagini
        #creando una lista e usando poi getimagesize() per prelevare le informazioni
        list($larghezza,$altezza,$sorgente,$attributo) = getimagesize($nome_temporaneo);
        #creo uno switch in base al sorgente e per ogni caso  effettuer&#65533; un preciso evento
        switch($sorgente)
        {
            case IMAGETYPE_GIF:
            le immagini
            $immagine = imagecreatefromgif($nome_temporaneo);
            imagegif($immagine, $dir.$nome);
            break;
            
            case IMAGETYPE_JPEG:
            $immagine = imagecreatefromjpeg($nome_temporaneo);
            imagejpeg($immagine, $dir.$nome);
            break;
            
            case IMAGETYPE_PNG:
            $immagine = imagecreatefrompng($nome_temporaneo);
            imagepng($immagine, $dir.$nome);
            break;
            
            case IMAGETYPE_BMP:
            $immagine = imagecreatefrombmp($nome_temporaneo);
            imagebmp($immagine, $dir.$nome);
            break;
        }
        
        #Creo il div dove gli assegno l'id per identificare  con JQuery le imamgini appena caricate
        ?>    <div id='<?php echo $n?>'>
                <img src='<?php echo $dir.$nome?>' style='width:100px; height:100px'>
                <input  id='hidden<?php echo $n ?>' type='hidden' value='<?php echo $dir.$nome ?>'/>
                <div onclick='togli("<?php echo $n ?>")'>Togli</div>
            </div>
            <div id='rimetti<?php echo $n ?>'  onclick='rimetti("<?php echo $n ?>")' style='display:none'>Rimetti</div>
        <?php
        $n++; #aumento la variabile inizializzata per il funzionamento dello while
    }
    ?>
        <div id='cancella_img'></div>
        <input type='submit' value='carica' onclick='carica();void 0'/>
    <?php
    exit;
    

    }
    ?>
    <form action='' method='POST' enctype='multipart/form-data'>
    <input type='file' name='file[]' multiple size ="60"/>
    <input type='submit' name='sub' value='Carica'/>
    </form>
    [/PHP]

    insert_immages.php

    [PHP]

    <?php
    require_once("connetti.php");

    if(isset($_POST['fine']))
    {
    #Inserisci questa funzioncina per leggere tutti i file contenuti nella cartella immagini
    #che poi verranno inseriti nel db tramite una query grazie ad un for
    function illustrazioni($cartella){
    $foto=Array();
    if(file_exists($cartella)){
    $directory = opendir($cartella);
    while (false !== ($file = readdir($directory))) {
    if(is_file($cartella.$file)){
    array_push($foto,$file);
    }
    }
    $handle = closedir($directory);
    }
    sort($foto);
    return $foto;
    }
    $foto_t=array();
    $foto_t=illustrazioni("img_temp/");
    $conta = count($foto_t);
    for ($x=0; $x<$conta; $x++)
    {
    $immagine_t = "img_temp/$foto_t[$x]";
    $immagine = "immages/$foto_t[$x]";
    echo "<img src='".$immagine_t."' width='100px' height='100px'> ";
    #questa variabile contiene il valore dell'url finale che si inserirà alla fine
    #Sposto i file nella cartella temporanea in quella fissa
    copy($immagine_t,'immages/'.$foto_t[$x]) or die('non si sposta la foto');
    ##infine elimino il file nella directory temporanea
    unlink($immagine_t);

        $insert_query = "INSERT INTO immagine(immagine) VALUES('".$immagine."')";
        mysql_query($insert_query);
               
    }
    echo "Le immagini sono state inserite nel database con successo!";
    

    }
    mysql_close();

    ?>
    [/PHP]

    togli.php

    [PHP]

    <?php

    require_once("connetti.php");

    echo $_GET['img']." eliminata con successo!</div>";
    #elimino il file con la funzione unlink()
    unlink($_GET['img']);
    ?>
    [/PHP]

    Lo script così com'è fatto e con le sue cartelle delle immagini chiamate una img_tmp e l'altra immages, funziona correttamente, e viene anche memorizzato il link nel db. Solo che c'è a mio avviso qualche modifica da fare di cui non saprei come fare.

    La prima, è che le thum vengono visualizzate all'instante dopo averle caricare

    La seconda, l'upload delle immagini dovrebbe essere un po' più velocizzato

    La terza, è la più importante le immagini dovrebbero essere raggruppate in un albulm e successivamente visualizzate andandoci sopra con il moise.

    Chi mi può dare una mano a fare ciò ????? Spero di ricevere una vostra risposta, grazie.