Visualizzazione risultati 1 fino 17 di 17

Discussione: problemi upload d'immagini

  1. #1
    Guest

    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($nomefile, PATHINFO_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
    Guest

    Predefinito

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

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

    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 13.46.27

  5. #5
    Guest

    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
    Guest

    Predefinito

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

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

    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 14.10.58

  8. #8
    Guest

    Predefinito

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

  9. #9
    Guest

    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
    Guest

    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
    Guest

    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
    Guest

    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
    Guest

    Predefinito

    Ah ok oggi provo e ti saprò dire

  16. #16
    Guest

    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($nomefile, PATHINFO_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 18.41.32

  17. #17
    Guest

    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($nomefile, PATHINFO_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
  •