Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    upload multiplo che non va

    Ho questo script per l'upload multiplo di files:
    Codice PHP:
    <form method="post" action="testupload2.php" enctype="multipart/form-data">
    Scegli i file: 

    <input type="file" name="file[]"> 

    <input type="file" name="file[]"> 

    <input type="file" name="file[]"> 

    <input type="file" name="file[]"> 

    <input type="file" name="file[]"> 

    <input type="submit" value="Invia files" name="go">
    </form><?php
    $maxSize 
    200//massima dimensione dei file in kilobyte
    $acceptType = array( //tipi di file accettati, in questo caso solo immagini
         
    'png' => 'image/png',
         
    'jpe' => 'image/jpeg',
         
    'jpeg' => 'image/jpeg',
         
    'jpg' => 'image/jpeg',
         
    'gif' => 'image/gif',
         
    'bmp' => 'image/bmp',
         
    'ico' => 'image/vnd.microsoft.icon',
    ); 
    $cartella "images/"//cartella dove vengono caricati i file nel server
    for($i=0;$i<count($_FILES['file']);$i++) 
        echo 
    "Risultato file ".($i+1).": ".singleUpload($i$cartella$maxSize$acceptType)."
    "
    ;
    function 
    singleUpload($i$cartella$maxSize$acceptType) {
    if(@
    $_FILES['file']['name'][$i] != "") {
        
    $destinazione $cartella.basename$_FILES['file']['name'][$i]); 
        if(
    $_FILES['file']['size'][$i] <= $maxSize*1024) {
            if(
    in_array($_FILES['file']['type'][$i], $acceptType)) {
                if(@
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) 
                    return 
    "File caricato con successo!";
                else
                    return 
    "Errore nell'upload del file";
            }else
                return 
    "Tipo di file non accettato!";
        }else
            return 
    "Dimensione del file troppo grande, massima dimensione accettata: ".$maxSize." kilobyte";
    }elseif(isset(
    $_POST['go']))
        return 
    "Nessun file inserito!"
    }
    ?>
    Mi ritorna invariabilmente il messaggio di errore Errore nell'upload del file.
    Ma non riesco a capire il perchè... Ho provato anche mettendo il path assoluto alla cartella di destinazione, ma non cambia nulla...
    C'è qualche errore nello script che non vedo? O il problema può essere altrove (quale)?

    Qualsiasi aiuto sarà altamente apprezzato...
    metatad
    graphic & web design

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    i permessi per la cartella di destinazione sono giusti? Prova anche a togliere il @ davanti al move_uploaded.. per vedere che errore ti da

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    La cartella è settata su CHMOD 777.
    Togliendo la @ davanti a move_uploaded continua a darmi sempre lo stesso errore!...
    metatad
    graphic & web design

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ok, settando i permessi della cartella su CHMOD 757, funziona...
    Però, adesso devo risolvere un'altro problema.
    Devo registrare i nome dei file uploadati su db, tenendo presente che:
    - il numero totale è fisso (16)
    - è pur sempre possibile che non venga fatto l'upload di tutti i file in un unica volta, e quindi devo evitare che la registrazione avvenga in modo errato.
    Ad esempio (qui, mi limiterò a 5 x comodità...):
    Nel form avrò 5 campi input di tipo file
    Codice PHP:
    <input type="file" name="file[]">
    <
    input type="file" name="file[]">
    <
    input type="file" name="file[]">
    <
    input type="file" name="file[]">
    <
    input type="file" name="file[]"
    ciascuno dei quali fa riferimento ad uno specifico file (sono immagini) da caricare.
    Però l'utente potrebbe fare l'upload di tre file su cinque, per cui potrebbe risultare che i file sono:
    img1.jpg
    - - - -
    img3.jpg
    - - - -
    img5.jpg

    mentre il 2 ed il 4 non vengono caricati.
    Io devo essere sicuro che i nomi di questi tre file vengano registrati ciascuno nel giusto campo del db.
    Tenendo presente come funge lo script (vedi post iniziale), come posso fare?
    metatad
    graphic & web design

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Procedendo per tentativi...
    Ho modifcato lo script come segue:
    Codice PHP:
    $list "";
    for(
    $i=0;$i<count($_FILES['file']);$i++)  
        echo 
    "Risultato file ".($i+1).": ".singleUpload($i$cartella$maxSize$acceptType)."
    "
    ;
    function 
    singleUpload($i$cartella$maxSize$acceptType) {

    if(@
    $_FILES['file']['name'][$i] != "") {
    $imgfile $_FILES['file']['name'][$i];
    $list $list $imgfile "#";
    echo 
    $list;
        
    $destinazione $cartella.basename$_FILES['file']['name'][$i]); 
        if(
    $_FILES['file']['size'][$i] <= $maxSize*1024) {
            if(
    in_array($_FILES['file']['type'][$i], $acceptType)) {
                if(@
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione))
                    return 
    "File caricato con successo!";
                else
                    return 
    "Errore nell'upload del file";
            }else
                return 
    "Tipo di file non accettato!";
        }else
            return 
    "Dimensione del file troppo grande, massima dimensione accettata: ".$maxSize." kilobyte";
    }elseif(isset(
    $_POST['go']))
        return 
    "Nessun file inserito!";

    L'idea sarebbe, al termine del processo di upload, di fare un explode della variabile $list, e quindi utilizzare i vari items ricavati per registrarli nel db.
    Però, se faccio un echo di $list al termine della funzione, non mi restituisce niente, mentre l'echo che faccio subito (riga 8 dello script) mi restituisce - ad esempio - questo:
    test1.jpg#Risultato file 1: File caricato con successo!
    Risultato file 2: Nessun file inserito!
    test3.jpg#Risultato file 3: File caricato con successo!
    Risultato file 4: Nessun file inserito!
    Risultato file 5: Nessun file inserito!

    Comincio a stare fuori... non riesco più a vedere dove sto toppando...
    Nessuno sa darmi una illuminazione?
    metatad
    graphic & web design

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Up?
    metatad
    graphic & web design

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.