upload file - problema con if ed else

salve,

io devo uppare un file ma in caso questo file non esista lo script non deve eseguire il codice.

Io faccio così:

la variabile che arriva è $file:

if ($_FILES['file']=="") { 
   } else {
codice da eseguire
}

il problema e che mi esegue esmpre quello di sotto come devo fare per far saltare il codice da eseguire in caso di file mancante??

inviato 8 anni fa
eros23
X 0 X

Ebbene, $_FILES['file'] in realtà è solo mezzo dato, infatti dal manuale online si evince che il nome completo si ricava da questa variabile: $_FILES['userfile']['name'] ad ogni buon conto il tuo è un sistema che non sempre è preciso, meglio usare sempre le costanti predefinite del PHP, come negli esempi allegati al manuale  ;)

<?php
// Nelle versioni di PHP precedenti alla 4.1.0 si deve utilizzare  $HTTP_POST_FILES anzichè 
// $_FILES.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possibile attacco tramite file upload!\n"; 
}
echo 'Alcune infromazioni di debug:';
print_r($_FILES); 

print "</pre>";

?>

Oppure:

<form action="" method="post" enctype="multipart/form-data">
<p>Pictures:
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="submit" value="Send" />
</p>
</form>
<?php
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "data/$name");
    }
}
?>

Nell'ultimo esempio nel caso si vogliano caricare sul server più files, modificarlo per caricare un solo file non è difficile in fondo si tratta di eliminare un po' di <input /> nello xhtml e il ciclo nel php.

risposto 8 anni fa
Marco Grazia
X 0 X

Grazie marcolino,

dopo avevo approfondito l'argomento e ci sono arrivato da solo...ho usato infatti $_FILES['userfile']['name'] perchè se non c'è nome non lo doveva eseguire...

Ogni tanto una pausa ti aiuta a capire quello che non riesci a capire in 10 ore uahauha grazie ancora

risposto 8 anni fa
eros23
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda