Visualizzazione dei risultati da 1 a 9 su 9

Discussione: upload interrotto

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    57

    upload interrotto

    ho uno script che fa l'upload di un file sul server e lo inserisce in una tabella del db. la form è in un popup. mi succede che se per caso mi accorgo di aver sbagliato file e clicco sul tasto annulla, che mi chiude la popup, anche se il file non è stato uppato x intero, me lo inserisce nel db.

    prima di eseguire la query controllo che
    $_FILES["immagine"]["error"] == 0

    ovvero che il file sia stato caricato correttamente. evidentemente lo script crede che il download sia completo se interroto dall'utente.

    come posso fare x ovviare a questa cosa e capire quando davvero il file è stato inserito x intero?

  2. #2
    Codice PHP:
    <?PHP
    if (is_uploaded_file($_FILES['campo']['tmp_name']))
      {
         
    // il file è stato caricato
      
    }
    else
      {
         
    // Il file non è stato caricato
      
    }
    ?>
    Ciao!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    57
    ti ringrazio della risposta, ma non va.

    io faccio così:

    if ($_FILES["immagine"]["error"] == 0){

    if (is_uploaded_file($_FILES["immagine"]["tmp_name"])){
    $estensione = explode('.', $_FILES["immagine"]["name"]);
    if ($estensione[1] == $ext){
    .
    .
    .
    if (move_uploaded_file($_FILES["immagine"]["tmp_name"], $path.$fileName)){


    e faccio la query

    nonostante questi controlli, se l'upload lo interrompo, la query mi viene eseguita lo stesso. immagino io perchè qualcosa gli viene passato e lui lo considera come se fosse intero

  4. #4
    Ma $_FILES['immagine']['error'] lo devi togliere.

    Devi lasciare solo is_uploaded_file() che ti assicuro funziona.

    Prova a controllare con is_uploaded_file che sia satato caricato e se è stato caricato sposta il file in una cartella.

    Mentre carichi premi invia e prova ad interrompere. Se il file sta nella cartella non ci sono problemi, se non c'è non so che dirti.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    57
    però anche levandolo che cambia?

    se is_uploaded_file() funziona, dovrebbe funzionare anche se prima ci metto la condizione che $_FILES['immagine']['error'] == 0, no?

    x scrupolo ho provato e infatti, viene inserito lo stesso nel db.

    tra l'altro non capisco una cosa: lo script che controlla se il file è stato uppato, ecc, dovrebbe essere chiamato solo dopo che il file è stato uppato. ma se io interrompo il flusso di dati chiudendo la finestra, lo script viene stroncato x cui.....

  6. #6
    No.
    Quando clicchi sul pulsante invia vengono inviati subito tutti i dati e quindi il file viene caricato. Una volta caricato parte lo script.

    Per sicurezza fai una cosa:

    controlla se il file viene caricato (is_uploaded_file()) e poi usa move_uploaded_file per spostarlo dalla directory temporanea ad una directory tua a piacere per vedere se viene spostato. Se viene spostato controlla anche che funzioni.

  7. #7
    Utente di HTML.it L'avatar di C232
    Registrato dal
    Dec 2004
    Messaggi
    303

    ...

    controlla su php.net che nel array $_FILES[indice][error] c'è una costante chiamata UPLOAD_ERR_PARTIAL... potresti verificare se $_FILES["indice"]["error"] è uguale a quella costante...
    C/C++

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2000
    Messaggi
    57
    il mio codice è questo



    if ($_FILES["immagine"]["error"] == 0) // file caricato correttamente
    {
    if (is_uploaded_file($_FILES["immagine"]["tmp_name"]))
    {
    $estensione = explode('.', $_FILES["immagine"]["name"]);
    if ($estensione[1] == $ext)
    {
    .
    .
    .
    if (move_uploaded_file($_FILES["immagine"]["tmp_name"], $path.$fileName))
    {
    $query = "INSERT INTO .......";
    $result = mysql_query($query);
    $num = mysql_affected_rows();
    $id = mysql_insert_id();
    if ($num != -1)
    echo 'OK';
    else if ($num == -1)
    echo 'KO';
    }
    }
    else
    KO\n';
    }
    }
    else if ($_FILES["immagine"]["error"] == 1) //Il file inviato le dimensioni specificate nel upload_max_filesize di php.ini
    $_SESSION['msgAlert'] .= $toysAdmin['filesError']['1'].'\n';
    else if ($_FILES["immagine"]["error"] == 2) // Il file inviato eccede le dimensioni specificate nel MAX_FILE_SIZE del form.
    $_SESSION['msgAlert'] .= $toysAdmin['filesError']['2'].':\n';
    else if ($_FILES["immagine"]["error"] == 3) // Valore: 3; Upload eseguito parzialmente
    $_SESSION['msgAlert'] .= $toysAdmin['filesError']['3'].':\n';
    else if ($_FILES["immagine"]["error"] == 4) // Valore: 4; Nessun file è stato inviato
    {
    //$_SESSION['msg'] .= $msgConfig['startKO'].$toysAdmin['filesError']['4'].$msgConfig['end'];
    //$_SESSION['msgAlert'] .= $toysAdmin['filesError']['4'].':\n';
    }

  9. #9
    Codice PHP:
    if (is_uploaded_file($_FILES["immagine"]["tmp_name"]))
      {
          if (
    move_uploaded_file($_FILES["immagine"]["tmp_name"], $path.$fileName))
            {
              echo 
    'Impossibile spostare il file';
            }
      }
    else
      {
        echo 
    'errore durante il caricamento';
      } 
    Prova ad utilizzare solo questo script per vedere se il caricamento avviene.

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.