Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Errore di upload

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181

    Errore di upload

    Salve a tutti,

    ho scritto un form per l'upload di immagini con un file in php che fa l'upload. Nella fattispecie
    il file upload.php prevede una funzione che effettua l'upload ma al momento di fare l'upload
    mi ritorna sempre un errore di caricamento
    Ecco il codice
    function upload_file($directory,$file,$array_ext)
    {
    // Controllo del formato
    $min = strtolower($file['name']);
    $pos = strpos($min,".");
    $ext = substr($min,$pos);
    if (!in_array($ext,$array_ext)) {
    echo "Formato del file ".$file['name']." non ammesso

    ";
    return false;
    }

    // Controllo dell'esistenza del file nella directory
    if (file_exists($directory.$file['name'])) {
    echo $file['name']." esiste nella directory delle immagini

    ";
    return false;
    }

    // Upload del file
    if (!move_uploaded_file($file['tmp_name'], $directory.$file['name'])) {
    echo "Errore di caricamento

    ";
    return false;
    }

    return true;
    }

    dove $directory è la cartella dove memorizzare i file, $file=$_FILES['pic1'] e $array_ext è un
    array di stringhe di formato cioè 'jpg','png',ecc...
    La funzione mi ritorna sempre Errore di caricamento qualcuno sa dirmi perchè?
    E come risolvo il problema?

  2. #2
    A leggere il codice sembra corretto!prova a controllare la variabile $directory.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181
    La variabile $directory contiene il percorso assoluto della cartella dove memorizzare il file
    e cioé E:\MY LOCKBOX\Sviluppi\Sviluppi PHP\sito\img\products

  4. #4
    prova ad aggiungere "/"alla fine del percorso di $directory

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181
    Fatto anzi ho cambiato tutti i \ in / ma da' lo stesso risultato

  6. #6
    direi che se magari dici qual'è l'errore specifico restituito da move_uploaded_file ti possiamo dare subito subito la risposta
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181
    Il tipo di errore che ritorna non lo conosco in quanto faccio l'upload all'interno di un if per cui se c'è un errore viene eseguito il corpo dell'if, ergo tale funzione ritornerà un valore booleano.
    Suggerimenti su come posso intercettare l'errore?

  8. #8
    mmm, si, ma ....

    ... posteresti il messaggio di warning che php DEVE mostrarti, tranne se configurato per non farlo, quando la funzione move_uploaded_file fallisce?

    il fatto che sta dentro un IF non vuol dire assolutamente nulla ... se php non ti mostra i messaggi di errore controlla che il parametro display_errors sia su on e che l'error reporting sia su E_ALL
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181
    il parametro display_errors è su on ed error_reporting è su E_ALL
    eseguo un move_uploaded_file($file['tmp_name'], $directory.$file['name']); prima dell'if per vedere
    se torna un errore ma non ritorna nulla, quindi vale ciò che pensavo cioè il valore che torna è un
    booleano quindi un true o false.
    Anzi il messagio che stampa è sempre quello all'interno dell'if
    // Upload del file
    if (!move_uploaded_file($file['tmp_name'], $directory.$file['name'])) {
    echo "Errore di caricamento

    ";
    return false;
    }

  10. #10
    .
    .
    .
    prima dell'if per vedere
    se torna un errore ma non ritorna nulla, quindi vale ciò che pensavo cioè il valore che torna è un
    booleano quindi un true o false.
    .
    .
    .
    il fatto che l'essere dentro un if non gli faccia dare errore non ha assolutamente nessuna importanza e, se ne sei ancora convinto, ti consiglierei di dare una rispolverata alle basi della programmazione con php.

    Detto questo, la pagina sul manuale
    www.php.net/move_uploaded_files

    dice
    If filename is not a valid upload file, then no action will occur, and move_uploaded_file() will return FALSE.

    If filename is a valid upload file, but cannot be moved for some reason, no action will occur, and move_uploaded_file() will return FALSE. Additionally, a warning will be issued.
    Ovvero l'unico caso in cui il move_uploaded_file restituisce solo il false e non da il warning è quando il nome del file passato per l'upload non è valido ovvero quando si tenta di spostare un file che, in pratica, non è stato uploadato

    Dai un occhio a
    www.php.net/is_uploaded_file
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.