Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema con upload

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173

    Problema con upload

    Salve a tutti ho un problema nel caricare una foto su server il codice è questo

    Codice PHP:
    session_start();
    include(
    "config.php");
    $id $_SESSION['id'];
     
            if(
    eregi('^image/p?jpeg(;.*)?$',$_FILES['foto']['type'])){    
                     
    $extension '.jpg';   

                  }else{  
        
                    
    $extension '.gif';  

                  }       

     
    $cartella 'foto_upload';    
     @
    mkdir($cartella);        

     
    $filename 'C:/xampp/htdocs/sito/foto_upload/'.time().$_SERVER['REMOTE_ADDR'].$extension;       

     if(
    is_uploaded_file($_FILES['foto']['tmp_name']) and copy($_FILES['foto']['tmp_name'],$filename)){
          
             echo 
    "Upload fatto";

             }else{   

          echo 
    "Errore nel caricare $filename";    


    Mi genera questo errore:
    Warning: copy(C:/xampp/htdocs/sito/foto_upload/1397246267::1.jpg): failed to open stream: Invalid argument in C:\xampp\htdocs\sito\upload.php on line 18

    Chi mi potrebbe aiutare?
    Ultima modifica di Joisberg; 11-04-2014 a 22:26

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Usa move_uploaded_file() non copy().

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173
    Ora mi dice errore nel caricare (nomedelfile) cioè l'echo dell'else :/

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Allora controlla queste 2 cose:
    - hai usato enctype='multipart/form-data' nel tag <form> ?
    - per $filename usa un perrcorso relativo e non assoluto, oppure usa un indirizzo come lo metteresti nella barra degli indirizzi del browser (http://localhost/sito/foto_upload/.... ), perché Apache non lo sa chi è c: non puoi risalire nelle cartelle oltre la root (htdocs).

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173
    Allora il form si c'è il enctype='multipart/form-data' e poi ho cambiato il percorso e non và mi dà sempre lo stesso errore.
    Comunque la cosa che ho notato e che quando mi dà l'errore dice
    Errore nel caricare http://localhost/sito/foto_upload/1397302706::1.gif
    Però il mio file è in formato jpg mentre sopra mi ritorna un'estensione gif. In più ho messo
    or die (mysql_error()) e mi ritorna 1.


  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Allora, un po' di cose:
    Codice PHP:
    //eregi è deprecarta, usa preg_match()
    //cerchi pjpeg o jpeg come tipo di file, evidentemente risulta diverso
    if(eregi('^image/p?jpeg(;.*)?$',$_FILES['foto']['type']))
    {
        
    $extension '.jpg';
    }
    else
    {  
        
    $extension '.gif';  

    Stampa $_FILES['foto']['type'] e vedi cosa dice
    Se risulta diverso da jpeg o pjpeg il tuo codice dice di usare .gif come estensione ed è ovvio che il file non venga trovato.
    Ultima modifica di Alhazred; 12-04-2014 a 14:10

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173
    Non mi stampa nulla se faccio l'echo di $_FILES['foto']['type'];

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Non è detto che il tipo di file sia correttamente contenuto lì dentro, lì ci finisce ciò che invia il browser, se il browser non inizializza tale variabile, allora resta vuota.

    Usa finfo_open() per reperire informazioni sul file.

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.