• User Newbie

    problema con UPLOAD

    Innanzitutto ciao a tutti :ciauz: sono nuova del forum
    Sto facendo uno scriptino per fare l'upload di file ma non funziona.
    lo script è:

    <?
    $file_up=$_POST&#91;'file'&#93;;
    
    if &#40;$file_up != ""&#41;
        &#123;
        copy&#40;"$file_up", "files/$file_up"&#41; or die&#40;"Non è possibile copiare il file."&#41;;
        &#125;
    else
        &#123;
        die&#40;"Non è stato specificato alcun file."&#41;;
        &#125;
    ?>
    <html>
    <body>
    <p align=center>Hai inviato <? echo "$file_up"; ?> correttamente.</p>
    </body>
    </html>
    

    Warning: copy(files/....): failed to open stream: Invalid argument in c:\inetpub\wwwroot... on line 6 (cioè la riga che contiene copy)

    il bello è che ero riuscita a farlo funzionare sul mio pc, poi però l'ho provato sul server e non fuzionava, così ho cominciato a smanettare come una pazza e probabilmente ho modificato anche la versione che funzionava in locale 😢 😢 😢

    qualcuno può darmi una dritta? grazie a tutti :ciauz:


  • User Attivo

    Controlla che sia presente la directory files e sia sprotetta.


  • User Newbie

    grazie innanzitutto per avermi risposto.
    ho ricontrollato ma l'avevo già settata su 777.
    Ho cambiato qualcosina nel form e ora sembra che non riesca a passare il parametro, eppure mi sembra tutto giusto...

    il form è:

    <HTML>
    <BODY>
    <FORM ACTION="do_upload2.php" METHOD="POST">
            <DIV ALIGN=CENTER>
             </DIV>
            <DIV ALIGN=CENTER>
                    
    
    **immagine da caricare:**
    
    <INPUT TYPE="file" NAME="file"></P>
            </DIV>
            <DIV ALIGN=CENTER>
                    
    
    <INPUT TYPE="submit" VALUE="invia"></P>
            </DIV>
    </FORM>
    </P>
    </BODY>
    </HTML>
    

    mentre do_upload2.php è:

    <?
    $file_up=$_POST&#91;'file'&#93;;
    
    if &#40;$file_up != ""&#41;
        &#123;
        copy&#40;"$file_up", "files/$file"&#41; or die&#40;"Non è possibile copiare il file."&#41;;
        &#125;
    else
        &#123;
        die&#40;"Non è stato specificato alcun file."&#41;;
        &#125;
    ?>
    <html>
    <body>
    <p align=center>Hai inviato <? echo "$file_up"; ?> correttamente.</p>
    </body>
    </html>
    

    e il problema ora è che salta all'else' e non carica il file, infatti di messaggi di errore ora non ne dà, ma mi restituisce il messaggio che ho impostato nel caso in cui non venga specificato alcun file :mmm:


  • Moderatore

    Ciao.

    L'errore è nel fatto che php mette i dati dei file uploadati non in post, ma in $_FILE.

    Ad esempio $_FILES['nomefile'] da la grandezza del file, $_FILES['nomefile']['name'] da il suo nome reale e così via.

    Ps devi usare un enctype nel form altrimenti non passi nulla.
    qualcosa tipo <form enctype="multipart/form-data">
    :ciauz:


  • User Newbie

    grazie massy,
    ho fatto come mi hai detto e ho inserito la parte che mancava, ma non funziona ancora :bho:
    non so più come cambiarlo 😢 , ora è così:

    <HTML>
    <BODY>
    <form id="form" name="form" enctype="multipart/form-data" method="post" action="do_upload2.php">
            <DIV ALIGN=CENTER>
             </DIV>
            <DIV ALIGN=CENTER>
                    
    
    **Immagine da caricare:**
    
    <INPUT TYPE="file" NAME="immagine"></P>
            </DIV>
            <DIV ALIGN=CENTER>
                    
    
    <INPUT TYPE="submit" VALUE="invia"></P>
            </DIV>
    </FORM>
    </BODY>
    </HTML>
    

    e do_upload2.php è così:

    <?
    $file_up=$_POST&#91;'immagine'&#93;;
    
    if &#40;$file_up != ""&#41;
        &#123;
        copy&#40;"$file_up", "files/$immagine"&#41; or die&#40;"Non è possibile copiare il file."&#41;;
        &#125;
    else
        &#123;
        die&#40;"Non è stato specificato alcun file."&#41;;
        &#125;
    ?>
    <html>
    <body>
    <p align=center>Hai inviato <? echo "$immagine"; ?> correttamente.</p>
    </body>
    </html>
    

  • Moderatore

    Non hai fatto come ti ho detto 😛

    $file_up=$_POST['immagine']; non è esatto.

    devi lavorare con $_FILES[] 🙂

    :ciauz:


  • User Newbie

    è vero non l'avevo notato, adesso provo
    grazie infinite