Visualizzazione risultati 1 fino 17 di 17

Discussione: problemi upload d'immagini

  1. #1
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito problemi upload d'immagini

    Salve a tutti,

    Dovrei fare l'upload delle immagini ma i codici che ho sono tutti fasulli. Non sono riuscito nemmeno a far funzionare uno che avevo. Quindi sono sprovvisto di codice da poter mostrare. Se qualcuno me ne potrebbe gentilmente passare uno funzionante ne sarei grato. Ovviamente debbo memorizzare anche il link di tale immagine nel db facendo un update al db. Ho questo vecchissimo:

    Codice PHP:
    <?php
    //require_once("connetti.php");

    require_once("connettianzio.php");

    require_once(
    "paginaris.php");


    #se non esistono delle cartelle le creo
    if(!file_exists('img_temp'))
    {
        
    mkdir('img_temp/',0777);
    }
    if(!
    file_exists('immages'))
    {
        
    mkdir('immages/',0777);
    }
    ///inizializziamo il messaggio
    $messaggio "&nbsp;";
    // estensioni ammesse
    $estensioni = array("jpg""png""bmp""pdf");
    // percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
    $dir getcwd() . "/immages";
    // verifichiamo che sia stato premuto il submit
    if (isset($_POST['upload']) && $_POST['upload'] == "Carica immagine") {
        
    // recuperiamo e uniamo le informazionei sulle immagini
        
    $infoimages array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']);
        
    // scorriamo l'array
        
    foreach ($infoimages as $k => $v) {
            
    // nome del file
            
    $nomefile strtolower($k);
            
    // recuperiamo l'esensione
            
    $estensionefile pathinfo($nomefilePATHINFO_EXTENSION);
            
    // controlliamo il tipo immagine
            
    if (in_array(strtolower($estensionefile), $estensioni)) {
                
    // controllo caricamento
                
    if (is_uploaded_file($v)) {
                    
    // spostiamo il file nella cartella immagini
                    
    if (!move_uploaded_file($v"$dir/$nomefile")) {
                        
    $messaggio "Impossibile spostare il file";
                    } else {
                        
    $messaggio "Immagini/e caricata e memorizzata con successo";
                       
    // $q_i = mysql_query("INSERT INTO immagine(immagine,id_nome) VALUES('$nomefile','$id_nome'))");
                       
                        //$query = mysql_query("INSERT INTO immagine(immagine,id_nome) VALUES('$nomefile','$id_nome')");
                        
                        
    $query "INSERT INTO immagine(immagine,id_nome) VALUES ('$nomefile',".$_SESSION['id'].")";
                        
                        
    mysql_query($query);

                    }
                } else {
                    
    $messaggio "Errore nell'upload del file.";
                }
            } else {
                
    $messaggio "Tipo immagine non consentito";
            }
        }
    }
    ?>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Carica immagini</title>
            <style>
                .thumb {
                    width:96px;
                    height:96px;
                    margin:0 5px;
                }
            </style>
        </head>
        <body>
            <form enctype='multipart/form-data' method='post' action='<?php echo $_SERVER['PHP_SELF'?>'>
                <p><?php echo $messaggio ?></p>
                <p>Selezione una o piu immagini: </p>
                <!-- Campo file di nome "image" -->
                <p><input name="image[]" type="file" size="40" multiple="multiple"/></p>            
                <!-- Pulsante -->
                <p><input name="upload" type="submit" value="Carica immagine" /></p>
            </form>
            <p>Immagini caricate</p>
            <?php
            
    // indico il percorso della cartella
            
    $d dir(getcwd() . "/immages");
            
    //ciclo il contenuto
            
    while ($entry $d->read()) {
                if (
    $entry != "." && $entry != "..") {
                    
    // se non è un altra cartella
                    
    if (!is_dir("immages/" $entry)) {
                        
    // mostro l'immagine
                        
    echo "<img class='thumb' src='immages/" $entry "' alt='immages'/>";
                    }
                }
            }
            
    $d->close();
            
    ?> 
        </body>
    </html>
    Spero che qualcuno di voi mi possa aiutare grazie.

  2. #2
    Guest

    Predefinito

    Questo è il codice base che poi puoi arricchire con ulteriori controlli o restrizioni.

    Consdera che questo script elabora i dati di un form in cui è presente il campo
    Codice HTML:
    <input type="file" name="immagine" />
    Codice PHP:
     
     $file 
    $_FILES['immagine'];
     
     
    // Se l'immagine è stata inviata
     
    if(isset($file)) {

      
    // Controllo preliminare sull'invio dell'immagine
      
    if(is_uploaded_file($file['tmp_name'])) {
      
       
    // Switch dei possibili errori
       
    switch($file['error']) {
         
        
    // Primo caso: nessun errore, il file viene salvato e la variabile $inviato assume valore TRUE (per evenutuali controlli o messaggi di conferma)
        
    case 'UPLOAD_ERR_OK':
      
         
    $file['name'] = 'nome_immagine.jpeg';
         
    $percorso "dove/vuoi/salvare/il/file/" $file['name'];
         
    move_uploaded_file($file['tmp_name'], $percorso);
         
    $inviato true;
       
         break;
         
        
    // Secondo caso: dimensioni del file non consentite
        
    case 'UPLOAD_ERR_INI_SIZE':
         echo 
    "Il file che hai provato a caricare supera le dimensioni consentite.";
         exit();
         break;
         
        
    // Terzo caso: non si riesce a completare il caricamento del file
        
    case 'UPLOAD_ERR_PARTIAL':
         echo 
    "Errore: il file &egrave; stato caricato solo parzialmente.";
         exit();
         break;
         
        
    // Quarto caso: errore con la cartella temporanea
        
    case 'UPLOAD_ERR_NO_TMP_DIR':
         echo 
    "Errore: non si trova la cartella temporanea, riprova.";
         exit();
         break;
        
       }
      
      }
     
     } 

  3. #3
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Ok oggi pome l'onorevole e ti saprò dire com'è andata. Grazie.

  4. #4
    darbula non è connesso AlterGuru
    Data registrazione
    24-04-2011
    Messaggi
    2,083

    Predefinito

    Con il tuo codice ci sono due interpretazioni possibili.. Se mi baso per l' HTML5 (per via del multiple nella input) stai prevedendo l'invio multiplo di file mentre con PHP prevedi l'invio singolo. Guarda l'esempio 3 di questo link http://php.net/manual/en/features.fi...ost-method.php con HTML normale.
    Ecco perché si deve scorrere l'array http://php.net/manual/en/features.fi...d.multiple.php
    Ultima modifica di darbula : 13-09-2016 alle ore 14.46.27

  5. #5
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Penso che per L'Avana non necessita di selezione multipla. Basta selezionare un'immagine giusto ??? Invece per le thumb serve la selezione multipla.

  6. #6
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Grazie x i codici appena posso li guardo e vi saprò dire.

  7. #7
    darbula non è connesso AlterGuru
    Data registrazione
    24-04-2011
    Messaggi
    2,083

    Predefinito

    Emh.. io ti ho detto come recuperare il file cioè
    Codice PHP:
    // Primo file
    $infoimages array_combine($_FILES["image"]['name'][0], $_FILES["image"]['tmp_name'][0]);
    // Secondo file
    $infoimages array_combine($_FILES["image"]['name'][1], $_FILES["image"]['tmp_name'][1]); 
    Nota l'inserimento degli indici [0] e [1].. L'avatar normalmente è uno (ma nulla vieta di inserire più immagini e selezionare soltanto un'immagine, cosi se l'utente vuole cambiare avatar a due strade 1)scegliere un'immagine già salvata o 2)caricarne una nuova)
    Ultima modifica di darbula : 13-09-2016 alle ore 15.10.58

  8. #8
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    E tu quale mi consiglieresti di adoperare ???? (Anche se so già la risposta. Almeno penso di ssperla) !!!!

  9. #9
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Ciao descartesadventures,

    Perdonami questa stringa qua:

    $file = $_FILES['immagine'];
    E' la cartella dove si vanno a memorizzare le immagini giusto ??? Inoltre questo codice upload.php

    Codice PHP:
    <form enctype='multipart/form-data' method='post' action='<?php echo $_SERVER['PHP_SELF'?>'>
                <p><?php echo $messaggio ?></p>
                <p>Selezione immagine: </p>
                <!-- Campo file di nome "image" -->
                <p><input name="image" type="file" size="40" enctype='multipart/form-data'/></p>            
                <!-- Pulsante -->
                <p><input name="upload" type="submit" value="Carica immagine" /></p>
            </form>
            <p>Immagini caricate</p>
    Va bene per il tuo esempio che mi hai dato ???? Aspetto risposta grazie.

  10. #10
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Ciao darbula,

    Purtroppo mi riesce difficile l'inglese ma ho fato comunque un'occhiata ai link da te indicatomi. Ma sinceramente non c'ho capito na mazza 8scusate l'espsressione). Mi potresti dare anche tu una mano grazie ????

  11. #11
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Ciao descartesadventures,

    Allora ho provato il tuo codice ma niente sembra non andare. Questo è quello che ho fatto:

    addavatar.php

    Codice PHP:
    <!DOCTYPE html>

    <html>
        <head>
            <meta charset="UTF-8">
            <title>Aggiungi Avatar</title>
        </head>
        <body>
            <?php
            
    require_once("db_connect.php");
            
            
    $file $_FILES['avatar'];
     
     
    // Se l'immagine è stata inviata
     
    if(isset($file)) {

      
    // Controllo preliminare sull'invio dell'immagine
      
    if(is_uploaded_file($file['tmp_name'])) {
      
       
    // Switch dei possibili errori
       
    switch($file['error']) {
         
        
    // Primo caso: nessun errore, il file viene salvato e la variabile $inviato assume valore TRUE (per evenutuali controlli o messaggi di conferma)
        
    case 'UPLOAD_ERR_OK':
      
         
    $file['name'] = 'nome_immagine.jpeg';
         
    $percorso "avatar" $file['name'];
         
    move_uploaded_file($file['tmp_name'], $percorso);
         
    $inviato true;
       
         break;
         
        
    // Secondo caso: dimensioni del file non consentite
        
    case 'UPLOAD_ERR_INI_SIZE':
         echo 
    "Il file che hai provato a caricare supera le dimensioni consentite.";
         exit();
         break;
         
        
    // Terzo caso: non si riesce a completare il caricamento del file
        
    case 'UPLOAD_ERR_PARTIAL':
         echo 
    "Errore: il file &egrave; stato caricato solo parzialmente.";
         exit();
         break;
         
        
    // Quarto caso: errore con la cartella temporanea
        
    case 'UPLOAD_ERR_NO_TMP_DIR':
         echo 
    "Errore: non si trova la cartella temporanea, riprova.";
         exit();
         break;
        
       }
      
      }
     
     }  
            
    ?>
        </body>
    </html>
    Considera che gli utenti si devono scegliere l'immagine sul pc quindi non c'è un nome ben specifico. Grazie.

  12. #12
    Guest

    Predefinito

    Dunque, il campo file del form html con cui l'utente carica l'immagine ha nome avatar?

    Inoltre, qui
    Codice PHP:
    $file['name'] = 'nome_immagine.jpeg';
         
    $percorso "avatar" $file['name']; 
    sembra che ci sia qualcosa che non va, perché $file['name'] deve contenere il nome che vuoi dare all'immagine inviata dall'utente, mentre $percorso deve contenere il posto in cui vuoi salvarla. Ora, scritto così, il percorso sarebbe avatarnome_immagine.jpeg, che ovviamente non è un percorso valido. Supponiamo che tu voglia salvare l'immagine inviata dall'utente (credo sia un avatar, quindi la chiamerò "avatar.jpeg") in una cartella chiamata "assets". In questo caso quel pezzo di codice dovrà essere:
    Codice PHP:
    $file['name'] = 'avatar.jpeg';
         
    $percorso "assets/" $file['name']; 
    Tieni presente che ti conviene scrivere il percorso in maniera relativa, cioè: se il form si trova, ad esempio, nella cartella moduli, e sia quest'ultima cartella, sia la cartella assets non sono sottocartelle di un'altra cartella, allora il percorso relativo sarà: .../assets/avatar.jpeg

  13. #13
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Credo di aver capito il concetto. Domani se sto meglio provo. Però il nome viene scelto sempre dall'utente nella lista che ha delle foto e non per forsa si chiamerà avatar ma si può chiamare anche pincopallino.png

  14. #14
    Guest

    Predefinito

    Certo, ma così
    Codice PHP:
    $file['name'] = 'avatar.jpeg'
    viene rinominata

  15. #15
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Ah ok oggi provo e ti saprò dire

  16. #16
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Predefinito

    Ciao descartesadventures,

    Scusami se non mi sono fatto più sentire ma in questi giorni non sono stato per niente al pc o ci sono stato pochissimo giusto il tempo di provare il codice. Mi da alcuni errori:

    Questi sono i seguenti errori:

    Warning: mkdir(): Permission denied at on line 15
    Warning: move_uploaded_file(/volume1/web/utenti/prova2/avatar/bordo intorno al pulsante da togliere.png): failed to open stream:
    Permission denied in /volume1/web/utenti/prova2/addavatar2.php on line 42 Warning: move_uploaded_file(): Unable to move '/volume1/@tmp/phpgFSaso' to '/volume1/web/utenti/prova2/avatar/bordo intorno al pulsante da togliere.png' in /volume1/web/utenti/prova2/addavatar2.php on line 42
    Considerando che la cartella già esiste e ci sono tutti permessi e considerando che la cartella si chiama "avatar". Questo è il codice dove sbaglio ancora ??? Inoltre come posso far visualizzare l'immagine ???

    Codice PHP:
    <!DOCTYPE html>

    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <?php
    require_once("db_connect.php");

     
    #se non esistono delle cartelle le creo
    if(!file_exists('img_temp'))
    {
        
    mkdir('avatar/',0777);
    }
    if(!
    file_exists('avatar/'))
    {
        
    mkdir('avatar/',0777);
    }
    ///inizializziamo il messaggio
    $messaggio "&nbsp;";
    // estensioni ammesse
    $estensioni = array("jpg""png""bmp""pdf");
    // percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
    $dir getcwd() . "/avatar";
    // verifichiamo che sia stato premuto il submit
    if (isset($_POST['upload']) && $_POST['upload'] == "Carica immagine") {
        
    // recuperiamo e uniamo le informazionei sulle immagini
        
    $infoimages array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']);
        
    // scorriamo l'array
        
    foreach ($infoimages as $k => $v) {
            
    // nome del file
            
    $nomefile strtolower($k);
            
    // recuperiamo l'esensione
            
    $estensionefile pathinfo($nomefilePATHINFO_EXTENSION);
            
    // controlliamo il tipo immagine
            
    if (in_array(strtolower($estensionefile), $estensioni)) {
                
    // controllo caricamento
                
    if (is_uploaded_file($v)) {
                    
    // spostiamo il file nella cartella immagini
                    
    if (!move_uploaded_file($v"$dir/$nomefile")) {
                        
    $messaggio "Impossibile spostare il file";
                    } else {
                        
    $messaggio "Immagini/e caricata e memorizzata con successo";
                       
    // $q_i = mysql_query("INSERT INTO immagine(immagine,id_nome) VALUES('$nomefile','$id_nome'))");
                       
                        //$query = mysql_query("INSERT INTO immagine(immagine,id_nome) VALUES('$nomefile','$id_nome')");
                        
                        
    $query "INSERT INTO immagine(immagine,id_nome) VALUES ('$nomefile',".$_SESSION['id'].")";
                        
                        
    mysql_query($query);

                    }
                } else {
                    
    $messaggio "Errore nell'upload del file.";
                }
            } else {
                
    $messaggio "Tipo immagine non consentito";
            }
        }
    }
    ?>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Carica immagini</title>
            <style>
                .thumb {
                    width:96px;
                    height:96px;
                    margin:0 5px;
                }
            </style>
        </head>
        <body>
            <form enctype='multipart/form-data' method='post' action='<?php echo $_SERVER['PHP_SELF'?>'>
                <p><?php echo $messaggio ?></p>
                <p>Selezione una o piu immagini: </p>
                <!-- Campo file di nome "image" -->
                <p><input name="image[]" type="file" size="40" multiple="multiple"/></p>            
                <!-- Pulsante -->
                <p><input name="upload" type="submit" value="Carica immagine" /></p>
            </form>
            <p>Immagini caricate</p>
            <?php
            
    // indico il percorso della cartella
            
    $d dir(getcwd() . "avatar/");
            
    //ciclo il contenuto
            
    while ($entry $d->read()) {
                if (
    $entry != "." && $entry != "..") {
                    
    // se non è un altra cartella
                    
    if (!is_dir("immages/" $entry)) {
                        
    // mostro l'immagine
                        
    echo "<img class='thumb' src='iavatar/" $entry "' alt='avatar'/>";
                    }
                }
            }
            
    $d->close();
            
    ?> 
        </body>
    </html>
     ?>
     
     
      </body>
     </html> 
        </body>
    </html>
    Spero in una tua risposta e aiuto grazie.
    Ultima modifica di fabiodefe : 24-09-2016 alle ore 19.41.32

  17. #17
    fabiodefe non è connesso Utente attivo
    Data registrazione
    30-04-2011
    Messaggi
    408

    Smile

    Salve a tutti,

    Allora ho modificato alcune cosette nel codice e finalmente sono riuscito ad ottenere un discreto risultato. Il problema è che mi da errore all'inizio e gli errori sono i seguneti:

    Warning: mkdir(): File exists at line 15
    Qua sembra che tenti di creare la cartella avatar ma non ci riesce perchè già esiste. M a se io la tolgo lui non me la crea. Come risolvere ???

    Poi ci sono questi errori qua. una volta caricato l'immagine:

    Warning: mkdir(): File exists at line 15
    Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) at line 52 Warning: mysql_query(): A link to the server could not be established at line 52
    Vi riposto il codice con gli errori da me sfuggiti in precedenza ed ora corretti:

    Codice PHP:

    <!DOCTYPE html>

    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <?php
    require_once("db_connect.php");

     
    #se non esistono delle cartelle le creo
    if(!file_exists('img_temp'))
    {
        
    mkdir('avatar',0777);
    }
    if(!
    file_exists('avatar'))
    {
        
    mkdir('avatar',0777);
    }
    ///inizializziamo il messaggio
    $messaggio "&nbsp;";
    // estensioni ammesse
    $estensioni = array("jpg""png""bmp""pdf");
    // percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
    $dir getcwd() . "/avatar";
    // verifichiamo che sia stato premuto il submit
    if (isset($_POST['upload']) && $_POST['upload'] == "Carica immagine") {
        
    // recuperiamo e uniamo le informazionei sulle immagini
        
    $infoimages array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']);
        
    // scorriamo l'array
        
    foreach ($infoimages as $k => $v) {
            
    // nome del file
            
    $nomefile strtolower($k);
            
    // recuperiamo l'esensione
            
    $estensionefile pathinfo($nomefilePATHINFO_EXTENSION);
            
    // controlliamo il tipo immagine
            
    if (in_array(strtolower($estensionefile), $estensioni)) {
                
    // controllo caricamento
                
    if (is_uploaded_file($v)) {
                    
    // spostiamo il file nella cartella immagini
                    
    if (!move_uploaded_file($v"$dir/$nomefile")) {
                        
    $messaggio "Impossibile spostare il file";
                    } else {
                        
    $messaggio "Immagini/e caricata e memorizzata con successo";
                       
    // $q_i = mysql_query("INSERT INTO immagine(immagine,id_nome) VALUES('$nomefile','$id_nome'))");
                       
                        //$query = mysql_query("INSERT INTO immagine(immagine,id_nome) VALUES('$nomefile','$id_nome')");
                        
                        
    $query "INSERT INTO photo(immagine,id_nome) VALUES ('$nomefile',".$_SESSION['id'].")";
                        
                        
    mysql_query($query);

                    }
                } else {
                    
    $messaggio "Errore nell'upload del file.";
                }
            } else {
                
    $messaggio "Tipo immagine non consentito";
            }
        }
    }
    ?>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Carica immagini</title>
            <style>
                .thumb {
                    width:96px;
                    height:96px;
                    margin:0 5px;
                }
            </style>
        </head>
        <body>
            <form enctype='multipart/form-data' method='post' action='<?php echo $_SERVER['PHP_SELF'?>'>
                <p><?php echo $messaggio ?></p>
                <p>Selezione una o piu immagini: </p>
                <!-- Campo file di nome "image" -->
                <p><input name="image[]" type="file" size="40" multiple="multiple"/></p>            
                <!-- Pulsante -->
                <p><input name="upload" type="submit" value="Carica immagine" /></p>
            </form>
            <p>Immagini caricate</p>
            <?php
            
    // indico il percorso della cartella
            
    $d dir(getcwd() . "/avatar");
            
    //ciclo il contenuto
            
    while ($entry $d->read()) {
                if (
    $entry != "." && $entry != "..") {
                    
    // se non è un altra cartella
                    
    if (!is_dir("avatar/" $entry)) {
                        
    // mostro l'immagine
                        
    echo "<img class='thumb' src='avatar/" $entry "' alt='avatar'/>";
                    }
                }
            }
            
    $d->close();
            
    ?> 
        </body>
    </html>
     
     
     
      </body>
     </html> 
        </body>
    </html>
    Ultime due cose, non salva il link dell'immagine nel db e non ingrandisce l'avatar. Inoltre ad ogni immagine caricata rimane e non viene sostituita da quella nuova. Come posso risolvere ??? Grazie. Spero in un vostro aiuto.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •