Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    49

    Perdita di un file dopo l'upload

    Ho necessità di far un upoad di files, ho pensato di risolvere con un classico form:

    Codice PHP:
    <form name="gestisci" action="librerie/articolo/funzione.php" method="POST" enctype="multipart/form-data">              
    <
    input type="submit" name="funzione" value="Inserisci">
    <
    input type="hidden" name="action" value="upload"> <input name="disegno" type="file" size="10">
     </
    form
    dopo di che nella pagina funzione perdo il file!! quando lo cerco non lo trova più nei temporanei:

    Codice PHP:
    define("UPLOAD_DIR""./uploads/");         
     if(isset(
    $_POST['action']) and $_POST['action'] == 'upload'){
                  if(isset(
    $_FILES['user_file'])){ 
                     
    $file $_FILES['user_file'];          
                        if(
    $file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name'])){  
                
    move_uploaded_file($file['tmp_name'], UPLOAD_DIR.$file['name']);   
                           echo 
    "il file c'è ed è corretto";          
                     }else{echo
    "debug errore nel file";}              
                }else{echo
    "il file non esiste";}      
          }else{echo
    "chiamata inlegale";}         
      
    print_r($_FILES); 
    ;

    Però ho questo output:

    codice:
    il file non esisteArray ( [disegno] => Array ( [name] => Preliminary offer IMA - 0094 2008 rev0.pdf [type] => [tmp_name] => [error] => 1 [size] => 0 ) [programma] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
    Perchè secondo voi?
    Dove sbaglio?
    Preciso che se non faccio controlli sul file, non mi da errore quando lo muovo ma semplicemente il file che trovo è un file corrotto che non centra nulla con il file di origine.
    Riuscito a darmi un consiglio?
    Ciao e grazie.

  2. #2
    Nella form il campo file ha name = disegno mentre nel codice ti aspetti un campo chiamato user_file

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    49
    si hai ragione, ma il problema non è li, paciugando per cercare di risolvere ho aggiunto anche quell'errore. Se correggo la svista ho
    codice:
    Warning: move_uploaded_file(./uploads/Preliminary offer IMA - 0094 2008 rev0.pdf) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\www\resemini\librerie\articolo\funzione.php on line 15 
     Warning: move_uploaded_file() [function.move-uploaded-file]: 
    Unable to move 'D:\uploads\temp\php16.tmp' to './uploads/Preliminary offer IMA - 0094 2008 rev0.pdf' in D:\www\resemini\librerie\articolo\funzione.php on line 15
     il file c'è ed è correttoArray ( [disegno] => Array ( [name] => Preliminary offer IMA - 0094 2008 rev0.pdf [type] => application/pdf [tmp_name] => D:\uploads\temp\php16.tmp [error] => 0 [size] => 2502997 ) [programma] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
    quindi l'errore sul file temporaneo lo ho sempre e il file comunque risulta disperso sul server.

  4. #4
    Il problem NON è nel file temporaneo (il file c'è ed è corretto).

    Molto probabilmente la directory di destinazione è sbagliata oppure il nome del file non è corretto/supportato dal file system.

    Che cosa restituisce questo codice?

    Codice PHP:
    <?php 
    define
    ("UPLOAD_DIR""./uploads/"); 
    var_dump(file_exists(UPLOAD_DIR)); 
    var_dump(is_writable(UPLOAD_DIR)); 
    ?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    49
    mi da bool(false) bool(false), ho corretto mettento il percorso assoluto, ora mi da true e true. Ma perchè continua a darmi:
    D:\uploads\temp\php22.tmp [error] quando faccio il print del $_FILES e non esistono file in quel percorso?
    Dovrebbe esserci è la variabile $_FILES che mi da quel percorso non sono io che lo invento?
    Questa cosa mi ha completamente depistato, però comunque non mi spiego il perchè di questo errore.

  6. #6
    Originariamente inviato da tulkas_s
    mi da bool(false) bool(false), ho corretto mettento il percorso assoluto, ora mi da true e true. Ma perchè continua a darmi:
    D:\uploads\temp\php22.tmp [error] quando faccio il print del $_FILES e non esistono file in quel percorso?
    Dovrebbe esserci è la variabile $_FILES che mi da quel percorso non sono io che lo invento?
    Questa cosa mi ha completamente depistato, però comunque non mi spiego il perchè di questo errore.
    Come fai a dire che "non esistono file in quel percorso"?
    Sei al corrente del fatto che il PHP elimina i file di upload dalla directory temporanea al termine dell'esecuzione dello script?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    49
    si ne sono al corrente...
    io parlo dell'errore che mi da in output php,il fatto che php lo elimina non è rilevante, o meglio non penso che lo sia.Oltre tutto mi da lo stesso messaggio di output sia che metto il print_r($_FILES) prima o dopo il comando di move.

  8. #8
    A me questo codice funziona perfettamente:

    Codice PHP:
    <form name="gestisci" method="POST" enctype="multipart/form-data">              
    <input type="hidden" name="action" value="upload" /> 
    <input name="disegno" type="file" size="10" />
    <input type="submit" name="funzione" value="Inserisci" />
    </form>
    <pre>
    <?php
    define
    ('UPLOAD_DIR'dirname(__FILE__) . '/uploads/');  

    if (!
    file_exists(UPLOAD_DIR)) {
        die(
    'Destination Folder Not Found!');
    } elseif (!
    is_writable(UPLOAD_DIR)) {
        die(
    'Destination Folder Not Writable!');
    }

    if (isset(
    $_POST['action']) && ($_POST['action'] == 'upload')) {
        if (
    is_uploaded_file($_FILES['disegno']['tmp_name'])) {
            if (
    move_uploaded_file($_FILES['disegno']['tmp_name'], UPLOAD_DIR $_FILES['disegno']['name'])) {
               echo(
    "File is valid, and was successfully uploaded.\r\n");
            } else {
               echo(
    "Possible file upload attack!\r\n");
               
    print_r($_FILES);
            }
        } else {
            die(
    'Invalid file!');
        }
    }

    ?>
    </pre>

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.