Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di nicco86
    Registrato dal
    Jun 2007
    Messaggi
    173

    Upload file controllare se un file è stato scelto

    Ho creato un form in cui vengono inseriti dei dati e in cui c'è pure la possibilità di uploadare un file
    tutte queste info vengono salvate nel database
    nello script che effettua il salvataggio ho però la necessità di controllare se è stato scelto un file oppure no (il file in upload è facoltativo)
    come posso effettuare tale controllo?
    grazie

  2. #2
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    ciao,

    Codice PHP:
    if(isset($_REQUEST['input_file']))... 

  3. #3
    Utente di HTML.it L'avatar di nicco86
    Registrato dal
    Jun 2007
    Messaggi
    173
    input_file è il name del tag input di tipo file?

  4. #4
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    certamente per es.:
    Codice PHP:
    <input name="uploadedfile" type="file" /> 

  5. #5
    Utente di HTML.it L'avatar di nicco86
    Registrato dal
    Jun 2007
    Messaggi
    173
    non funziona anche se scelgo un file non entra dentro quell'if non capisco proprio perchè...

    ti riporto il codice

    form:
    codice:
    <table>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
    	<tr>
    		<td width="200px">Data inizio evento: </td><td width="200px"> <input id="datepicker" type="text" name="data"></td>
    	</tr>
    	<tr>
    		<td width="200px">Data fine evento: </td><td width="200px"> <input id="datepicker2" type="text" name="data2"> </td>
    	</tr>
    	<tr>
    		<td width="200px">Descrizione: </td><td width="200px"> <textarea name="testo" rows="5" cols="20"></textarea> </td>
    	</tr>
    	<tr>
    		<td width="200px">Upload PDF dell&acute;evento: </td><td width="200px"> 
    		<input type="file" name="fdc" size="50"> 		
     </td>
    	</tr>
    	<tr>
    	<td width="200px"><input type="submit" name="upload" value="Inserisci la news sul server"></td><td></td>
    	</tr>
    	</form>
    </table>
    php
    codice:
     if ($_POST["upload"] != "")
        {
    		if (isset($_REQUEST["fdc"])){
    			$percorso = "info/";
    			$fdc_temp = $_FILES["fdc"]["tmp_name"];
    			$fdc_name = $_FILES["fdc"]["name"];
    			if ($_FILES["fdc"]["type"] != "application/pdf")
    			{
    				echo "E&acute; possibile caricare solo file PDF";
    			}
    			else if (move_uploaded_file($fdc_temp, $percorso . $fdc_name))
    			{
    				echo "Upload eseguito con successo
    ";
    				//operazioni sul db
    				echo "News inserita
    ";
    				mysql_close($con);
    			}
    			else
    			{
    				echo "Si &egrave; verificato un errore in fase di upload";
    			}
    		}
    		else{
    			
    //altre operazioni sul db
    			echo "News inserita
    ";
    		}
    	}
    ?>

  6. #6
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    sei sicuro che non entra nell'if? prova a leggere tutto quello che c'è dentro l'array $_REQUEST e $_FILES prima di iniziare con if ($_POST["upload"] ecc..., cosa ti mostra?

    Codice PHP:
    echo "<pre><div style='background-color:#abc; color:black;' align='left'>"print_r($_REQUEST); echo "</div></pre>";
    echo 
    "<pre><div style='background-color:#abc; color:black;' align='left'>"print_r($_FILES); echo "</div></pre>"

  7. #7
    Utente di HTML.it L'avatar di nicco86
    Registrato dal
    Jun 2007
    Messaggi
    173
    prima di efettuare l'upload:
    codice:
    Array ( [__utma] => 10109216.2065315837424503800.1251901900.1251995389.1252018633.5 [__utmz] => 10109216.1251901900.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) [__utmb] => 10109216.1.10.1252018633 [__utmc] => 10109216 [PHPSESSID] => 5c0ecb6a2a2ed945236f509522dbf20e )
    
    Array ( )
    e dopo
    codice:
    Array ( [data] => 2009-09-15 [data2] => 2009-09-09 [testo] => esttewt [upload] => Inserisci la news sul server [__utma] => 10109216.2065315837424503800.1251901900.1251995389.1252018633.5 [__utmz] => 10109216.1251901900.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) [__utmb] => 10109216.1.10.1252018633 [__utmc] => 10109216 [PHPSESSID] => 5c0ecb6a2a2ed945236f509522dbf20e )
    
    Array ( [fdc] => Array ( [name] => laserscanner.pdf [type] => application/pdf [tmp_name] => /tmp/phprloULa [error] => 0 [size] => 139493 ) )
    se invece inserisco una news senza file upload mi esce questo
    codice:
    Array ( [data] => 08/09/2009 [data2] => 2009-09-09 [testo] => erterter [upload] => Inserisci la news sul server [__utma] => 10109216.2065315837424503800.1251901900.1251995389.1252018633.5 [__utmz] => 10109216.1251901900.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) [__utmb] => 10109216.1.10.1252018633 [__utmc] => 10109216 [PHPSESSID] => 5c0ecb6a2a2ed945236f509522dbf20e )
    
    Array ( [fdc] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
    io non so interpretare questi dati spero che per te significhino qualcosa

    grazie per il momento...

  8. #8
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    ok,

    ora vedo scusa, per verificare se è stato selezionato un file per eseguire l'upload, bisogna chiedere all'array $_FILES invece die $_REQUEST:

    Codice PHP:
     if ($_POST["upload"] != "") {
        if (isset(
    $_FILES["fdc"] && $_FILES["fdc"]["size"] > 0)) {
                
    $percorso "info/";
    ... 
    come vedi nel caso in cui non hai selezionato un file, $_FILES["fdc"] rimane vuoto:

    $_FILES
    Codice PHP:
    Array ( 
        [
    fdc] => 
            Array ( 
            [
    name] => 
            [
    type] => 
            [
    tmp_name] => 
            [
    error] => 
            
    [size] => 
            


    potresti anche fare un controllo in base all'error, se è 4, significa nessun file in upload.

    Qui vedi il significato dell'elemeto error http://us3.php.net/manual/en/feature...oad.errors.php

  9. #9
    Utente di HTML.it L'avatar di nicco86
    Registrato dal
    Jun 2007
    Messaggi
    173
    ho messo
    codice:
    if (isset($_FILE["fdc"])){
    ...
    }
    ma va sempre nell'else

    dove sbaglio??

  10. #10
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    come vedi sopra $_FILE["fdc"] è settato ma senza volori, controlla come detto sopra con:

    Codice PHP:
    if ($_POST["upload"] != "")
    {
        if (isset(
    $_FILES["fdc"] && $_FILES["fdc"]["size"] > 0)) 
        {
            
    $percorso "info/";
            
    $fdc_temp $_FILES["fdc"]["tmp_name"];
            
    $fdc_name $_FILES["fdc"]["name"];
            if (
    $_FILES["fdc"]["type"] != "application/pdf")
            {
                echo 
    "E´ possibile caricare solo file PDF";
            }
            else if (
    move_uploaded_file($fdc_temp$percorso $fdc_name))
            {
                echo 
    "Upload eseguito con successo
    "
    ;
                
    //operazioni sul db
                
    echo "News inserita
    "
    ;
                
    mysql_close($con);
            }
            else
            {
                echo 
    "Si è verificato un errore in fase di upload";
            }
        }
        else
        {        
            
    //altre operazioni sul db
            
    echo "Selezionare File per Upoad!
    "
    ;
        }

    in quale else entra ora?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.