Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147

    Limitare l'upload di files

    Ciao ragazzi!

    Ho questa necessita: ho scritto un codice per l'upload di files. Ho bisogno di limitare questo upload. Nel senso che se nella directory in cui si vuole fare l'upload ci sono 3 o più files, l'upload non deve avvenire.

    Come posso fare?

    Grazie per l'aiuto!

  2. #2
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147
    Non c'è nessuno che mi può aiutare?

  3. #3
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147
    UP

  4. #4
    Utente di HTML.it L'avatar di leno
    Registrato dal
    Sep 2007
    Messaggi
    23
    dipende!

    in generale, e neanche tanto elegantemente, puoi, come hai detto, controllare che nella cartella non ci siano più di tre doc. io farei una funzione.

    Codice PHP:

    function check_dir_dim($dir){
     
    $dp=opendir($dir);
     
    $counter=0;
     while(
    $file=readdir($dp)){
      if(
    is_file($dir."/".$file)){
         
    $counter++;
      }
     }
     
    retrun $counter;

    questa funz dovrebbe restituire il numero di doc all'interno della cartella (+o-), puoi anche farle restituire 1 o 0 a seconda che ci siano più o mno di tre doc...

    quindi, sulla base del risultato, carichi o mano i doc...

  5. #5
    Se non sbaglio in quel modo..appena caricherai un solo file..ti dirà che la cartella è già piena

  6. #6
    La mia risposta è simile a quella di leno:

    Codice PHP:
    $dir dir('directory_di_interesse');
     
    $counter 0;
     
    $MAX_FILES 3//Il numero massimo di files consentiti nella directory
    function fai_upload() {
         
    //Inserisci qui il codice per l'upload
                  //Se ti serve te lo posto
     
    }
    while (
    $file $d->read()) {
         if (
    $file != "." && $file != "..") {
                 
    $counter++;
         }
    }
    if (
    $counter $MAX_FILES) {
         
    fai_upload(); //La funzione per l'upload
     

    In questo modo non dovresti avere preoblemi ....... credo
    Digital Riot!
    http://fatmatt.wordpress.com
    -Chi è disposto a rinunciare alla propria libertà in cambio di sicurezza, non merita ne libertà ne sicurezza- Benjamin Franklin

  7. #7
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147
    Ringrazio tutti per la celere risposta!

    Leno grazie ma purtroppo mi serve un codice che mi blocchi automaticamente l'upload del file!

    fatmatt purtroppo non riesco a far funzionare il codice che mi hai inviato. Appena si clicca sul pulsante di conferma del form mi compare una pagina bianca. Questo è il codice intero:

    Codice PHP:
    <?

    $cartella 
    $_POST['cartella'];
    $dir dir("/backups/".$cartella); 
    $counter 0
    $MAX_FILES 3//Il numero massimo di files consentiti nella directory 
    function fai_upload() { 
        if(!isset(
    $_FILES)) $_FILES $HTTP_POST_FILES;
    if(!isset(
    $_SERVER)) $_SERVER $HTTP_SERVER_VARS;

    /********************* VARIABILI DA SETTARE ********************/
    // Directory dove salvare i files Uploadati ( chmod 777, percorso assoluto)
    $paginaConferma "conferma.html";
    $cartella $_POST['cartella'];
    $upload_dir $_SERVER["DOCUMENT_ROOT"] . "/backups/".$cartella;

    // Eventuale nuovo nome da dare al file uploadato
    $new_name "";

    // Se $new_name è vuota, il nome sarà lo stesso del file uploadato
    $file_name = ($new_name) ? $new_name $_FILES["upfile"]["name"];

    if(
    trim($_FILES["upfile"]["name"]) == "") {

    die(
    "Non hai indicato il file da caricare!");

    }

    if(@
    is_uploaded_file($_FILES["upfile"]["tmp_name"])) {

    @
    move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$file_name"
    or die(
    "Impossibile spostare il file, controlla la correttezza dei dati inseriti");

    } else { 

    die(
    "Problemi nell'upload del file. Riprovare più tardi " $_FILES["upfile"]["name"]);

    }

    echo 
    "L'upload del file " $_FILES["upfile"]["name"] . " è avvenuto correttamente.
    Tra pochi istanti verrà aperta la pagina precedente."
    ;
    if (
    strlen($paginaConferma) < 5)
        {
            exit ();
        }
        else
        {
            echo 
    "<META HTTP-EQUIV=Refresh CONTENT=\"10; URL=".$paginaConferma."\">";
        } 

    while (
    $file $d->read()) { 
        if (
    $file != "." && $file != "..") { 
                
    $counter++; 
        } 

    if (
    $counter $MAX_FILES) { 
        
    fai_upload(); //La funzione per l'upload 
    }

    ?>

  8. #8
    Utente di HTML.it L'avatar di leno
    Registrato dal
    Sep 2007
    Messaggi
    23
    scusa, sono troppo stringato, lo ammetto...

    non ho controllato il codice che hai postato, cmq questo l'ho provato e funziona...

    ho fatto due pagine nella prima:

    Codice PHP:
    <form action="upload.php" method="post" enctype="multipart/form-data" method="POST">
        <
    input name="fileUp" type="file">
        <
    input name="cartella" type="hidden" value="cart_01">
        <
    input name="submit" type="submit" value="carica">
    </
    form
    io dimenticavo sempre di mettere enctype="multipart/form-data" ...

    nella seconda:

    Codice PHP:
    <?php
    if(isset($_FILES["fileUp"])){
        echo
    "

    provo a caricare</p>"
    ;
        if(
    check_dir_dim("backups/".$_POST["cartella"]."/"3)){
            if (
    move_uploaded_file($_FILES["fileUp"]["tmp_name"], "backups/".$_POST["cartella"]."/".$_FILES["fileUp"]["name"])){
                echo
    "<h1>OK!</h1>";
                echo
    "<pre>";
                
    print_r($_FILES);
                echo
    "</pre>";
            }else{
                echo 
    "errore!";
                echo
    "<pre>";
                
    print_r($_FILES);
                echo
    "</pre>";
            }
        }else{
            echo
    "<h1>troppi file!</h1>";
        }
    }


    function 
    check_dir_dim($dir$limit){
        
    $dp=opendir($dir);
        
    $counter=0;
        while(
    $file=readdir($dp)){
                if(
    is_file($dir."/".$file)){
                    
    $counter++;
                }
        }
        if(
    $counter>=$limit)
            return 
    0;
        else
            return 
    1
    }
    ?>

  9. #9
    Mi sono accorto di aver commesso un piccolo errore di distrazione:
    Ho dichiarato l'oggetto dir come:
    Codice PHP:
    $dir dir(); 
    Mentro nel while che effettua il conteggio ho nominato una variabile $d che invece non esiste, deve essere rimpiazzata con $dir:

    La riga
    Codice PHP:
    while ($file $d->read()) { 
    Deve essere cambiata in
    Codice PHP:
    while ($file $dir->read()) { 
    Scusa ancora per l'imprecisione e per il ritardo, ma la soluzione proposta da leno mi sembra migliore, in quanto ti fa risparmiare righe di codice e ti permette di affettuare eventuali modifiche con facilità
    Digital Riot!
    http://fatmatt.wordpress.com
    -Chi è disposto a rinunciare alla propria libertà in cambio di sicurezza, non merita ne libertà ne sicurezza- Benjamin Franklin

  10. #10
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147
    Grazie mille ragazzi! FUNZIONA!

    Mi avete risolto un gran bel problema!



    Grazie a tutti!!!!!!!!!!!

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.