+ Rispondi alla Discussione
Risultati da 1 a 37 di 37

[Script] Classe per l'upload

Ultimo Messaggio di Samyorn il:
  1. #1
    Moderatore L'avatar di ilnetsurfer
    Data Registrazione
    Jun 2007
    Località
    Napoli
    Messaggi
    552

    [Script] Classe per l'upload

    'Sera a tutti e benvenuti in questo nuovo script!
    Si tratta di uno script per l'upload, più precisamente una classe...Ovvero un insieme di funzioni!
    Lo script è abbastanza commentato, quindi credo non ci sia bisogno di spiegazioni...
    Ecco il codice :
    class.upload.php :
    Codice PHP:
    <?php
    ##################################
    #           PHP CLASS            #
    #         CLASSE PER L'UPLOAD    #
    #       TUTORIAL E GUIDA ALL'USO #
    #       IL NET-SURFER            #
    ##################################
    class upload{//Il nome della classe
    public $files;//Variabile pubblica di classe contenente il file
    public $dir;//Variabile pubblica di classe contenente la cartella
    public $max_size;//Variabile pubblica di classe contenente la dimensione massima dei files
    public $ext;//Variabile pubblica di classe contenente l'estensione del file
    public $ammissed_ext;//Variabile pubblica di classe contenente l'array con le estensioni accettate
    public $error;//Variabile pubblica di classe contenente gli errori
    public $complete;//Variabile pubblica di classe contenente il path sul disco dell'immagine
    public $link;//Variabile pubblica di classe  contenente l'URL dell'immagine
    function load($esito,$err ""){//Funzione load .Prevede due variabili :
    //esito(true o false, true se non c'è errore, false se c'è);
    //Err : se esito è false allora dentro contiene l'errore.Altrimenti sarà vuoto



    if(empty($err) && $esito true){//Se non ci sono errori e l'esito è ok

    $this->error "";
    if(!
    $this->is_ammissed_file()){ //Qui si fa uso di una funzione interna alla classe
    //Con $this->miafunc(); apriamo la funzione.Se la classe è statica utilizzeremo self::miafunc();
    $this->error[] = "Estensione non accetta!";//Aggiungiamo un errore nell'array
    }



    if(empty(
    $this->error)){
    {
    $this->files['name'] = str_ireplace(" ","_",$this->files['name']);//Eliminiamo gli spazi e sostituiamoli con -

    $id 0;
    if(
    file_exists($this->dir.$id."_".$this->files['name'])){//Se esiste il file con quel nome..
    while(file_exists($this->dir.$id."_".$this->files['name'])){//Finchè esiste il file con quel nome...

       
    $id++;//incrementa l'id
       
    $this->complete $this->dir.$id."_".$this->files['name']; //Crea il file con il nome : n_nomefile.ext dove n sta per un numero

    }

    if(!@
    move_uploaded_file($this->files['tmp_name'],$this->complete)){   //Se l'upload è andato a buon fine...

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->complete//Crea il link!
    }else{//Se non esiste un file con quel nome...
     
    if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$this->files['name']))//Upload!
    {

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->dir.$id."_".$this->files['name'];
    }

    }


    }
     else{
    $this->error[] = $err;//Altrimenti aggiunge l'errore
      
    }


     }
     }


    function 
    set_file_ext($_resource_file_name){//Funzione che restituisce l'estensione del file

    $ext_file explode("." $_resource_file_name);//Dividiamo la stringa in tante parti quante sono i punti + 1
    //ES: $stringa_punti = "ciao.mi.chiamo.valerio";
    //$stringa= explode(".",$stringa);
    //$stringa contiene:
    //$stringa[0] = "ciao"
    //$stringa[1] = "mi"
    //$stringa[2] = "chiamo"
    //$stringa[3] = "valerio"
    $count_ext_files count($ext_file)-1;//Contiamo il numero di elementi nell'array
    //ES: $array = Array("Ciao","xx","xxxx","jjb");
    //$count = count($array);
    //Restituisce 4
    $myext $ext_file[$count_ext_files];
    return 
    $myext;//La funzione darà come risultato l'estensione

    }

    function 
    is_ammissed_file(){//Funzione che restituisce true o false se l'estensione dei file è accettata
    $this->ext $this->set_file_ext($this->files['name']);      //Tramite la nostra funzione creata prima settiamo l'estensione
    if(in_array(strtolower($this->ext),$this->ammissed_ext))//Se l'estensione è contenuta nell'array della estensioni(con la funzione strtolower tutti i caratteri diventano in minuscolo(es .PHP diventa .php)
    {
    return 
    true;//Restituisce true
    }else{
    return 
    false;//Restituisce false
    }

    }

    function 
    __construct($files,$dir,$max_size,$ammissed_ext){// __construct, funzione che parte alla dichiarazione della classe
    //Da notare l'uso di $this->files invece di $files
    // la variabile globale di classe $this-> si usa nelle funzioni della classe
    //nelle classi di tipo statico non si utilizza $this-> ma self::
    //Assegnamo ad ogni variabile di classe il rispettivo contenuto
    $this->files $files;
    $this->dir =  $dir;
    $this->max_size $max_size;
    $this->ammissed_ext =   $ammissed_ext;
    switch(
    $this->files['error'])

                           {   
    //Fa uno switch degli errori presenti all'interno della variabile error di $this->files

    case UPLOAD_ERR_NO_FILE://Se non è stato selezionato alcun file...
    $this->error[] = "Non &egrave; stato selezionato alcun file!";
    $this->load(false,$this->error);
    break;

    case 
    UPLOAD_ERR_INI_SIZE://Se si superano le dimensioni massime secondo php.ini...
    $this->error[] = "&egrave; stato riscontrato un errore!Il file &egrave; troppo grande secondo le impostazioni del file php.ini!";
    $this->load(false,$this->error);
    break;

    case 
    UPLOAD_ERR_FORM_SIZE://Se si superano le dimensioni massime di max_file_size...
    $this->error[] = "Le dimensioni superano il valore massimo consentito!";
    $this->load(false,$this->error);
    break;

    case 
    UPLOAD_ERR_PARTIAL://Se si riscontra un errore nell'upload...
    $this->error[] = "&egrave; stato riscontrato un errore nell'upload!";
    $this->load(false,$this->error);
    break;

    case 
    UPLOAD_ERR_OK://Nessun errore
    $this->load(true);
    break;

    default: 
    //S c'è un errore sconosciuto...
    $this->error[] = "&egrave; stato riscontrato un errore sconosciuto!";
    $this->load(false,$this->error);
    break;
                           }

                           }
                           }

    ?>
    Utilizzo :

    Codice PHP:
    <?php
    ##################################
    #           PHP CLASS            #
    #         CLASSE PER L'UPLOAD    #
    #       TUTORIAL E GUIDA ALL'USO #
    #       IL NET-SURFER            #
    ##################################

    $max_file_size 102400;//Dimensione massima di un file.102400 Bytes = 100 KiloByte;1024 Bytes = 1 KiloByte
    $image_type = array('jpeg''jpg''png''gif''bmp'); //Estensioni accettate.Badate bene di scriverle in minuscolo!
    if(isset($_FILES['file'])){//Se esiste $_FILES
    require "class.upload.php";//includiamo la classe
    $obj = new upload($_FILES['file'],"car/",$max_file_size,$image_type); //Inizializziamo la classe!
    /*Il primo parametro è il file
    il secondo la cartella con le immagini(E ricordate di inserire / dopo il nome);
    Il terzo parametro è il limite massimo di grandezza dei files
    il quarto parametro è l'array contenente le estensioni accettate
    */
    #Controllo degli errori
    if(!empty($obj->error)){//Se $obj->error (variabile di classe) non è vuoto, vuol dire che ci sono errori
    foreach($obj->error as $err){//Scorre l'array!
    echo $err."<br />";
    }
    exit;
    //Esce dallo script se ci sono errori
    }else{ //Altrimenti...
    echo "Il link della tua immagine : <a href = \"".$obj->link."\">".$obj->link."</a>";
    }


    }

    ?>

    <form enctype="multipart/form-data" action="index.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size?>" />
    <input type="file" name="file" />
    <input type="submit" name="upload" value="Upload">

    </form>
    Features :

    1. Controllo dell'estensione
    2. Controllo MASSIMO di ogni errore
    3. Controlla se il file con quel nome già esiste : in caso affermativo altera il nome con un numero
    4. Restituisce il link con l'immagine
    5. Codice chiaro e ipercommentato

    Se volete aiuto per il codice o , perchè no, darmi consigli, fatevi avanti!
    Ola!
    Ultima modifica di ilnetsurfer; 16-01-09 alle 20:26
    He knows not where he's going.For the ocean will decide.It's not the DESTINATION...It's the glory of the RIDE.

  2. #2
    Moderatore L'avatar di ilnetsurfer
    Data Registrazione
    Jun 2007
    Località
    Napoli
    Messaggi
    552

    Importanti modifiche !!

    IMPORTANTI MODIFICHE!

    Ho apportato delle importanti modifiche allo script...
    Da adesso non c'è bisogno di utilizzare foreach per gli errori, la classe agirà da sola...Quindi bisogna solo limitarsi al consueto
    Codice PHP:
    $obj = new upload($_FILES['file'],"car/",$max_file_size,$image_type); 
    E niente più!
    Ecco il codice della classe :
    Codice PHP:
    <?php

     
    ##################################
    #           PHP CLASS  1.2          #
    #         CLASSE PER L'UPLOAD    #
    #       TUTORIAL E GUIDA ALL'USO #
    #       IL NET-SURFER            #
    ##################################
    class upload{//Il nome della classe
    public $files;//Variabile pubblica di classe contenente il file
    public $dir;//Variabile pubblica di classe contenente la cartella
    public $max_size;//Variabile pubblica di classe contenente la dimensione massima dei files
    public $ext;//Variabile pubblica di classe contenente l'estensione del file
    public $ammissed_ext;//Variabile pubblica di classe contenente l'array con le estensioni accettate
    public $error;//Variabile pubblica di classe contenente gli errori
    public $complete;//Variabile pubblica di classe contenente il path sul disco dell'immagine
    public $link;//Variabile pubblica di classe  contenente l'URL dell'immagine
    public $my_err;//Variabile pubblica di classe  contenente l'errore finale
    function load($esito,$err ""){//Funzione load .Prevede due variabili :
    //esito(true o false, true se non c'è errore, false se c'è);
    //Err : se esito è false allora dentro contiene l'errore.Altrimenti sarà vuoto



    if(empty($err) && $esito true){//Se non ci sono errori e l'esito è ok

    $this->error "";
    if(!
    $this->is_ammissed_file()){ //Qui si fa uso di una funzione interna alla classe
    //Con $this->miafunc(); apriamo la funzione.Se la classe è statica utilizzeremo self::miafunc();
    $this->error[] = "Estensione non accetta!";//Aggiungiamo un errore nell'array
    }



    if(empty(
    $this->error)){
    {
    $this->files['name'] = str_ireplace(" ","_",$this->files['name']);//Eliminiamo gli spazi e sostituiamoli con -

    $id 0;
    if(
    file_exists($this->dir.$id."_".$this->files['name'])){//Se esiste il file con quel nome..
    while(file_exists($this->dir.$id."_".$this->files['name'])){//Finchè esiste il file con quel nome...

       
    $id++;//incrementa l'id
       
    $this->complete $this->dir.$id."_".$this->files['name']; //Crea il file con il nome : n_nomefile.ext dove n sta per un numero

    }

    if(!@
    move_uploaded_file($this->files['tmp_name'],$this->complete)){   //Se l'upload è andato a buon fine...

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->complete//Crea il link!
    }else{//Se non esiste un file con quel nome...
     
    if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$this->files['name']))//Upload!
    {

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->dir.$id."_".$this->files['name'];
    }

    }


    }
     else{
    $this->error[] = $err;//Altrimenti aggiunge l'errore
      
    }


     }
     
    $this->no_error() ? print($this->link):print("Sono stati riscontrati i seguenti errori :
     "
    .$this->my_err);
     }


    function 
    set_file_ext($_resource_file_name){//Funzione che restituisce l'estensione del file

    $ext_file explode("." $_resource_file_name);//Dividiamo la stringa in tante parti quante sono i punti + 1
    //ES: $stringa = "ciao.mi.chiamo.valerio";
    //$stringa_array = explode(".",$stringa);
    //$stringa contiene:
    //$stringa[0] = "ciao"
    //$stringa[1] = "mi"
    //$stringa[2] = "chiamo"
    //$stringa[3] = "valerio"
    $count_ext_files count($ext_file)-1;//Contiamo il numero di elementi nell'array
    //ES: $array = Array("Ciao","xx","xxxx","jjb");
    //$count = count($array);
    //Restituisce 4
    $myext $ext_file[$count_ext_files];
    return 
    $myext;//La funzione darà come risultato l'estensione

    }

    function 
    is_ammissed_file(){//Funzione che restituisce true o false se l'estensione dei file è accettata
    $this->ext $this->set_file_ext($this->files['name']);      //Tramite la nostra funzione creata prima settiamo l'estensione
    if(in_array(strtolower($this->ext),$this->ammissed_ext))//Se l'estensione è contenuta nell'array della estensioni(con la funzione strtolower tutti i caratteri diventano in minuscolo(es .PHP diventa .php)
    {
    return 
    true;//Restituisce true
    }else{
    return 
    false;//Restituisce false
    }

    }

    function 
    __construct($files,$dir,$max_size,$ammissed_ext){// __construct, funzione che parte alla dichiarazione della classe
    //Da notare l'uso di $this->files invece di $files
    // la variabile globale di classe $this-> si usa nelle funzioni della classe
    //nelle classi di tipo statico non si utilizza $this-> ma self::
    //Assegnamo ad ogni variabile di classe il rispettivo contenuto
    $this->files $files;
    $this->dir =  $dir;
    $this->max_size $max_size;
    $this->ammissed_ext =   $ammissed_ext;
    switch(
    $this->files['error'])

                           {   
    //Fa uno switch degli errori presenti all'interno della variabile error di $this->files

    case UPLOAD_ERR_NO_FILE://Se non è stato selezionato alcun file...
    $this->error[] = "Non &egrave; stato selezionato alcun file!";
    $this->load(false,$this->error);
    break;

    case 
    UPLOAD_ERR_INI_SIZE://Se si superano le dimensioni massime secondo php.ini...
    $this->error[] = "&egrave; stato riscontrato un errore!Il file &egrave; troppo grande secondo le impostazioni del file php.ini!";
    $this->load(false,$this->error);
    break;

    case 
    UPLOAD_ERR_FORM_SIZE://Se si superano le dimensioni massime di max_file_size...
    $this->error[] = "Le dimensioni superano il valore massimo consentito!";
    $this->load(false,$this->error);
    break;

    case 
    UPLOAD_ERR_PARTIAL://Se si riscontra un errore nell'upload...
    $this->error[] = "&egrave; stato riscontrato un errore nell'upload!";
    $this->load(false,$this->error);
    break;

    case 
    UPLOAD_ERR_OK://Nessun errore
    $this->load(true);
    break;

    default: 
    //S c'è un errore sconosciuto...
    $this->error[] = "&egrave; stato riscontrato un errore sconosciuto!";
    $this->load(false,$this->error);
    break;
                           }

                           }
                           
    function 
    no_error(){ //Funzione che controlla se ci sono errori
    if(!empty($this->error)){//Se $this->error (variabile di classe) non è vuoto, vuol dire che ci sono errori

    foreach($this->error as $err){//Scorre l'array ...
    $this->my_err .= $err."<br />";  //E lo riempe!
    }
    return 
    false;
    }else{ 
    //Altrimenti...
    $this->link "Il link della tua immagine : <a href = \"".$this->link."\">".$this->link."</a>";
    return 
    true;
    }


    }
                           }

    ?>
    Ecco la parte importante :
    Codice PHP:
    function no_error(){ //Funzione che controlla se ci sono errori
    if(!empty($this->error)){//Se $this->error (variabile di classe) non è vuoto, vuol dire che ci sono errori

    foreach($this->error as $err){//Scorre l'array ...
    $this->my_err .= $err."<br />";  //E lo riempe!
    }
    return 
    false;
    }else{ 
    //Altrimenti...
    $this->link "Il link della tua immagine : <a href = \"".$this->link."\">".$this->link."</a>";
    return 
    true;
    }



    Per il resto, il codice della index sarà così:
    Codice PHP:
    <?php
    ##################################
    #           PHP CLASS 1.2        #
    #         CLASSE PER L'UPLOAD    #
    #       TUTORIAL E GUIDA ALL'USO #
    #       IL NET-SURFER            #
    ##################################

    $max_file_size 102400;//Dimensione massima di un file.102400 Bytes = 100 KiloByte;1024 Bytes = 1 KiloByte
    $image_type = array('jpeg''jpg''png''gif''bmp'); //Estensioni accettate.Badate bene di scriverle in minuscolo!
    if(isset($_FILES['file'])){//Se esiste $_FILES
    require "class.upload.php";//includiamo la classe
    $obj = new upload($_FILES['file'],"car/",$max_file_size,$image_type); //Inizializziamo la classe!
    /*Il primo parametro è il file
    il secondo la cartella con le immagini(E ricordate di inserire / dopo il nome);
    Il terzo parametro è il limite massimo di grandezza dei files
    il quarto parametro è l'array contenente le estensioni accettate
    */
    }

    ?>

    <?php
    echo "Estensioni accettate : ";//Scrive, tramite foreach, tutte le estensioni accettate
    foreach($image_type as $type){
    echo 
    $type." ";
    }
    ?>
    <form enctype="multipart/form-data" action="index.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size?>" />
    <input type="file" name="file" />
    <input type="submit" name="upload" value="Upload">

    </form>
    Ciao!
    Ultima modifica di ilnetsurfer; 26-01-09 alle 16:12
    He knows not where he's going.For the ocean will decide.It's not the DESTINATION...It's the glory of the RIDE.

  3. #3
    User
    Data Registrazione
    Sep 2008
    Messaggi
    120
    Ciao, ho dei dubbi sull'utilizzo me lo fai un esempi d'uso della classe? pure in pvt, grazie!!!!

  4. #4
    Moderatore L'avatar di ilnetsurfer
    Data Registrazione
    Jun 2007
    Località
    Napoli
    Messaggi
    552
    ho dei dubbi sull'utilizzo me lo fai un esempi d'uso della classe?
    Certamente!
    pure in pvt, grazie!!!!
    Meglio pubblicamente, così anche altri che si trovano in difficoltà come te potranno risolvere
    Iniziamo!
    Questa classe è molto semplice da utilizzare, sopratutto nella nuova versione, che non richiede il foreach degli errori.
    Considera questo codice :
    Codice:
    <form enctype="multipart/form-data" action="index.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size; ?>" />
    <input type="file" name="file" />
    <input type="submit" name="upload" value="Upload">
    
    </form>
    Per eseguire l'upload di un immaigine , bisogna prima usare l'html e creare un form.
    Codice:
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size; ?>" />
    Questo è un campo nascosto, ma serve perchè deve specificare la massima grandezza che un file uppato può avere.
    Anche se molti browser ignorano questo campo, è bene inserirlo, perchè poi ci penserà PHP a vedere se il file pesa eccessivamente.
    Detto questo, passiamo a php.
    Bisogna prima includere la classe :
    Codice PHP:
    <?php
    require "class.upload.php";//includiamo la classe
    ?>
    Dopodichè , istanziamo 2 variabili :
    Codice PHP:
    $max_file_size 102400;//Dimensione massima di un file.102400 Bytes = 100 KiloByte;1024 Bytes = 1 KiloByte
    $image_type = array('jpeg''jpg''png''gif''bmp'); //Estensioni accettate.Badate bene di scriverle in minuscolo! 
    $max_file_size è la variabile che contiene un numero ce sarà la massima grandezza in bytes di un file.
    $image_type è un array che contiene tutti i tipi di estensioni di un file(raw,jpg,jpeg,bmp, ecc...).
    Prima di effettuare l'upload, è bene controllare che il file esista :
    Codice PHP:
    if(isset($_FILES['file'])){//Se esiste $_FILES 

    Adesso upload!
    Codice PHP:
    $obj = new upload($_FILES['file'],"car/",$max_file_size,$image_type); //Inizializziamo la classe! 
    Dobbiamo inserire la variabile che contiene il file, la cartella di destinazione e le due variabili in precedenza istanziate.
    Non serve nient'altro!
    Quindi, il codice essenziale sarà :
    Codice PHP:
    <?php
    $max_file_size 
    102400;
    $image_type = array('jpeg''jpg''png''gif''bmp'); 
    if(isset(
    $_FILES['file'])){
    require 
    "class.upload.php";
    $obj = new upload($_FILES['file'],"car/",$max_file_size,$image_type); 
    }
    ?>
    <form enctype="multipart/form-data" action="index.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size?>" />
    <input type="file" name="file" />
    <input type="submit" name="upload" value="Upload">

    </form>
    Spero di essermi fatto capire
    Per qualsiasi dubbio, posta!
    Ola!
    He knows not where he's going.For the ocean will decide.It's not the DESTINATION...It's the glory of the RIDE.

  5. #5
    User
    Data Registrazione
    Aug 2008
    Messaggi
    101
    Ciao ma se io non voglio inserire un'immagine ma un file zip, rar o exe basta cambiare l'estensioni nella $image_type, giusto?
    Rispondi perfavore
    Ultima modifica di steave67; 24-02-09 alle 08:17

  6. #6
    Moderatore L'avatar di ilnetsurfer
    Data Registrazione
    Jun 2007
    Località
    Napoli
    Messaggi
    552
    Esattamente
    He knows not where he's going.For the ocean will decide.It's not the DESTINATION...It's the glory of the RIDE.

  7. #7
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Mi sto sbizzarrendo con questa classe.
    Già te li ho fatti i complimenti per questa classe e te li rinnovo.

    A questo punto pero' avrei una domanda:
    come lo struttureresti un multi-upload utilizzando questa classe?
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  8. #8
    Moderatore L'avatar di ilnetsurfer
    Data Registrazione
    Jun 2007
    Località
    Napoli
    Messaggi
    552
    Ciao sam...
    Perdona la mia prolungata assenza, ma la scuola non mi lascia tregua!
    Comunque, per il multiupload basta fare così :
    Codice PHP:
    <form enctype="multipart/form-data" action="index.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size?>" />
    <input type="file" name="file1" />
    <input type="file" name="file2" />
    <input type="submit" name="upload" value="Upload">

    </form>
    E così :
    Codice PHP:
    if(isset($_FILES['file1'])){//Se esiste $_FILES
    require "class.upload.php";//includiamo la classe
    $obj = new upload($_FILES['file1'],"car/",$max_file_size,$image_type); //Inizializziamo la classe!

    }
    if(isset(
    $_FILES['file2'])){//Se esiste $_FILES
    require "class.upload.php";//includiamo la classe
    $obj = new upload($_FILES['file2'],"car/",$max_file_size,$image_type); //Inizializziamo la classe!


    Però si potrebbe anche usare
    Codice PHP:
    <input type="file" name="file[]" /> 
    Però non l'ho mai usato...Non so come si fa...
    He knows not where he's going.For the ocean will decide.It's not the DESTINATION...It's the glory of the RIDE.

  9. #9
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Citazione Originariamente Scritto da ilnetsurfer Visualizza Messaggio
    Perdona la mia prolungata assenza, ma la scuola non mi lascia tregua!
    Scusarti di che?
    Son io e tutti gli altri utenti a cui è servita questa classe che dobbiamo ringraziare te.

    Citazione Originariamente Scritto da ilnetsurfer Visualizza Messaggio
    Però si potrebbe anche usare
    Codice PHP:
    <input type="file" name="file[]" /> 
    Però non l'ho mai usato...Non so come si fa...
    Credo, e c'è un'alta probabilità che stia sbagliando, che in questo caso bisogna implementare un Js o similare per l'associazione (tipo quando permetti di scegliere quanti campi upload file vuoi fare - Aggiungi un altro - ). Arrivati alla classe poi si fa il count e quindi si cicla il risultato. Ma non ne son certissimo.
    Ultima modifica di Samyorn; 10-04-09 alle 18:51
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  10. #10
    Moderatore L'avatar di ilnetsurfer
    Data Registrazione
    Jun 2007
    Località
    Napoli
    Messaggi
    552
    Ecco, ho questo script per aggiungere e rimuovere campi con js:
    Codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it"><head><title>Aggiungere campi in un modulo - Esempio JavaScript scaricato da HTML.it</title>
    
    
    
        
        <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
        <meta http-equiv="Content-Language" content="it">
    <script type="text/javascript">
    <!--
    
    var arrInput = new Array(0);
      var arrInputValue = new Array(0);
    
    function addInput() {
      //arrInput.push(createInput(arrInput.length));
      arrInput.push(arrInput.length);
      //arrInputValue.push(arrInputValue.length);
      arrInputValue.push("");
      display();
    }
    
    function display() {
      document.getElementById('parah').innerHTML="";
      for (intI=0;intI<arrInput.length;intI++) {
        document.getElementById('parah').innerHTML+=createInput(arrInput[intI], arrInputValue[intI]);
      }
    }
    
    function saveValue(intId,strValue) {
      arrInputValue[intId]=strValue;
    }  
    
    function createInput(id,value) {
      return "<input type='text' id='test  name='file[]' "+ id +"' onChange='javascript:saveValue("+ id +",this.value)' value='"+ value +"'><br>";
    }
    
    function deleteInput() {
      if (arrInput.length > 0) { 
         arrInput.pop(); 
         arrInputValue.pop();
      }
      display(); 
    }
    // -->
    </script></head><body>
    <br><br>
    <a href="javascript:addInput()">Aggiungi un campo al modulo</a><br>
    <a href="javascript:deleteInput()">Rimuovi un campo dal modulo</a>
    
    <div align="center">
    <p id="parah"></p>
    
    
    </div>
    
    
    </body></html>
    E questa è la funzione interessata :
    Codice HTML:
    function createInput(id,value) {
      return "<input type='text' id='test  name='file[]' "+ id +"' onChange='javascript:saveValue("+ id +",this.value)' value='"+ value +"'><br>";
    }
    Si dovrebbe ciclare $_FILES['file']....Il fatto è che vorrei anche provare, ma ho formattato da poco il pc e php non ce l'ho..Adesso installo un pacchetto così faccio due prove...Ti faccio sapere più tardi!
    Ola!
    He knows not where he's going.For the ocean will decide.It's not the DESTINATION...It's the glory of the RIDE.

  11. #11
    User
    Data Registrazione
    May 2009
    Messaggi
    102
    Ciao ti volevo chiedere una cosa, ma se io volessi che quando l'utente (ovviamente registrato) carichi un immagine ed essa viene rinominata con l'id del utnete, come dovrei fare?
    (Cosi poi posso richiamarla e creare un avatar).

    Grazie Salvatore.

  12. #12
    ModSenior L'avatar di Thedarkita
    Data Registrazione
    Aug 2006
    Località
    Messina
    Messaggi
    7,237
    Segui Thedarkita su Twitter Aggiungi Thedarkita su Google+ Aggiungi Thedarkita su Facebook Aggiungi Thedarkita su Linkedin Visita il canale Youtube di Thedarkita
    Ciao Zomer,
    Sostituendo:
    Codice PHP:
    if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$this->files['name']))//Upload! 
    Con:
    Codice PHP:
    if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$VariabileConID))//Upload! 
    Dovrebbe funzionare.

  13. #13
    User
    Data Registrazione
    May 2009
    Messaggi
    102
    Allora credo che funzioni ma una volta che l'utente carica l'immagine poi dopo come posso prenderla? dovrei fare qualcosa del tipo <IMG SRC="avatar/ID.gif"> non trovi? ma cosi facnedo richimarei l'id del utente che visualizza l'immagine qundi se l'untete A si conette visualizza la foto A perche il suo id chiama la foto A.gif e se l'utnete B vuole visitare la pagina dell'untete A vedera l'immagine B.gif!!!! come posso risolvere questo probolema?

  14. #14
    ModSenior L'avatar di Thedarkita
    Data Registrazione
    Aug 2006
    Località
    Messina
    Messaggi
    7,237
    Segui Thedarkita su Twitter Aggiungi Thedarkita su Google+ Aggiungi Thedarkita su Facebook Aggiungi Thedarkita su Linkedin Visita il canale Youtube di Thedarkita
    Devi semplicemente fare cosi:
    Codice PHP:
    <IMG SRC="avatar/<?php echo $VariabileConID?>.gif">

  15. #15
    User
    Data Registrazione
    May 2009
    Messaggi
    102
    Si funziona...ma ci sono dei problemi...

    1. Quando carico l'immagine è la visualizzo l'immagine, (che è una foto) è nella sua dimensione reale, ovvero gigantesca! a tutto schermo, potrei applicare dei semplici tag height e width...ma l'immagine potrebbe essere schiacciata.

    2. Questa è una cosa, che credo di poter risolver,e ma vorrei ugualtmente un consiglio...come posso modificare l'estensione del immagine, perchè se non no riuscirei a richiamarla
    Ultima modifica di Zomer; 04-07-09 alle 19:11

  16. #16
    User L'avatar di pusherxx
    Data Registrazione
    Mar 2007
    Messaggi
    148
    Scusate ma dove va inserita la directory dove deve essere copiato il file?

    Grazie in anticipo.
    Ultima modifica di Samyorn; 02-11-09 alle 20:19 Motivo: Maiuscole e punteggiatura. :)

  17. #17
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Ciao pusherxx, il file che contiene la classe lo puoi mettere dove vuoi, l'importante è che assegni il giusto percorso quando la richiami con il:
    Codice PHP:
    require "class.upload.php"
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  18. #18
    User L'avatar di pusherxx
    Data Registrazione
    Mar 2007
    Messaggi
    148
    No, volevo sapere dove devo inserire la directory su cui verranno salvate le foto!

  19. #19
    User L'avatar di pusherxx
    Data Registrazione
    Mar 2007
    Messaggi
    148
    Scusate, forse non sono stato chiaro e mi scuso, m'interessa sapere il campo, del codice PHP, in cui inserire la directory dove vanno a finire le immagini che andiamo ad upload-are!
    Scusate ancora e grazie in anticipo!
    Ultima modifica di Samyorn; 03-11-09 alle 19:25 Motivo: Maiuscole a inizio frase. ;)

  20. #20
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Nell'inizializzazione della classe.

    Codice:
    $obj = new upload($_FILES['file'],"car/",$max_file_size,$image_type); //Inizializziamo la classe!
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  21. #21
    User L'avatar di pusherxx
    Data Registrazione
    Mar 2007
    Messaggi
    148
    Ok, grazie per la risposta, ma mi dice ancora "impossibile salvare nella directory"!! Come mai? Dove sbaglio??
    Ultima modifica di Samyorn; 03-11-09 alle 22:30 Motivo: Maiuscole ad inizio frase.

  22. #22
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Prova a controllare i permessi della cartella.
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  23. #23
    User L'avatar di pusherxx
    Data Registrazione
    Mar 2007
    Messaggi
    148
    I permessi li ho settati già a 777, non vorrei che bisogna inserire qualche altro dato all'interno della classe. Tipo, nella classe c'è un punto in cui dice
    Codice:
    $this->link = "h ttp:// ".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->complete; //Crea il link!
    }else{//Se non esiste un file con quel nome...
     if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$this->files['name']))//Upload!
    {
    
    $this->error[] = "Impossibile copiare il file nella directory";
    
    
    }
    $this->link = "h ttp:// ".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->dir.$id."_".$this->files['name'];
    Bisogna inserire l'indirizzo del server compreso la cartella di destinazione o bisogna lasciarlo vuoto? perchè ho provato a riempirlo e a lasciarlo vuoto e non funziona comunque!
    Ultima modifica di Leonov; 04-11-09 alle 21:24 Motivo: Maiuscola. ;-)

  24. #24
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Sulla classe non c'è nulla da toccare, tranne che tu voglia apportare delle modifiche di comodo.
    Io l'ho appena testato ed è funzionante.

    Perdonami se ci torno...
    Dato l'errore il problema è nella scrittura del file in quella cartella (o non esiste - occhio a maiuscole/minuscole ovviamente - o non si han i permessi per scriverci).

    Potrebbe capitare che settando i permessi da ftp ti dice che ha fatto il settaggio dei permessi...ma in realtà non ha fatto nulla.
    Ti consiglio di controllare il nome cartella e che tu lo abbia scritto giusto:
    Codice:
    $obj = new upload($_FILES['file'],"upload/",$max_file_size,$image_type); //Inizializziamo la classe!
    ..e poi di controllare i permessi della cartella di upload da file manager.
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  25. #25
    User L'avatar di pusherxx
    Data Registrazione
    Mar 2007
    Messaggi
    148
    Grazie mille, ho capito dove sbagliavo! Ho creato questa galleria in una sotto cartella "gallery", all'interno della quale c'è la cartella dove dev'essere copiata l'immagine caricata "albums". Semplicemente il percorso che inserivo era gallery/albums/ invece che albums/.....grazie per avermi illuminato!!

  26. #26
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Di nulla.
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  27. #27
    User Newbie L'avatar di p.leonardo
    Data Registrazione
    Jan 2011
    Località
    Busso
    Messaggi
    3

    nome del file

    Ciao e tutti,
    ho provato la classe per l'upload perchè ho bisogno di poter caricare dei pdf da una pagina di backoffice per poi essere visualizzati in una pagina di fontoffice, mi spiego meglio:
    -entro nella pagina riservata agli amministratori (protetta da password) per caricare dei pdf che poi dovranno essere visualizzati nella pagina index.php visualizzabile da tutti.
    visto che non sono espertissimo di php, come devo fare per visualizzare il link del file caricato in una nuova pagina e non in quella di caricamento?
    inoltre vorrei sapere come fare per assegnare sempre dalla pagina del caricamento un nome al file, ad esempio riempire un campo che poi costituirà il nome del file che si sta caricando.

    grazie mille in anticipo, vi sarei molto grato se poteste aiutarmi...

  28. #28
    User Newbie L'avatar di p.leonardo
    Data Registrazione
    Jan 2011
    Località
    Busso
    Messaggi
    3
    Studiando un po' la situazione ho pensato di creare una tabella su un db mysql formata da 4 campi (id, descrizione, path, data), inserendo queste informazioni sul file caricato, potrei richiamare i record nella pagina index visibile a tutti formata dalla descrizione, dal link al documento ed eventualmente con la data di inserimento.
    cosa ne pensate?

    ho iniziato a scrivere del codice ma non riesco a capire come poter recuperare il link al documento caricato, quello che andrebbe nel campo path della tabella.
    per favore aiutatemi perchè non so proprio come fare.

  29. #29
    User
    Data Registrazione
    Oct 2009
    Messaggi
    18

    aiutino per favore

    Se volessi che l'immagine caricata, venisse automaticamente ridimensionata...come si fa?
    Grazie per l'attenzione

  30. #30
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Ciao frazoo,
    dovresti integrare lo script con quello che trovi quì.
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  31. #31
    User
    Data Registrazione
    Oct 2009
    Messaggi
    18
    ok, grazie della risposta...piccolo problemino... dove e come si integra?

  32. #32
    User
    Data Registrazione
    May 2012
    Località
    MILANO
    Messaggi
    15
    Buongiorno,
    Lo script funziona perfettamente,ho solo un piccolo problema...
    Alla fine del caricamento del file , viene visualizzato il messaggio,
    "Il link della tua immagine : vvv.miosito.itcartella/id_nomefile
    tra il mio sito e la cartella dove è memorizato il file non mette uno "/" come posso modificare lo script per correggerlo...
    Grazie,
    Roberto

  33. #33
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Ciao robyberre,
    prova su questa riga:
    Codice PHP:
    $obj = new upload($_FILES['file'],"cartella/",$max_file_size,$file_type); 
    a mettere il / prima del nome cartella:
    Codice PHP:
    $obj = new upload($_FILES['file'],"/cartella/",$max_file_size,$file_type); 
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  34. #34
    User
    Data Registrazione
    May 2012
    Località
    MILANO
    Messaggi
    15
    Grazie come sempre per l'aiuto,
    Avevo già provato a metterlo li ma mi va in errore con messaggio
    "Impossibile copiare il file nella directory" e non mi inserisce più il file.

  35. #35
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Allora lascialo in quel modo (senza la / all'inizio) e sulla classe vedi di modificare le righe come questa:
    Codice PHP:
    $this->link "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->dir.$id."_".$this->files['name']; 
    aggiungendo lo /

    Codice PHP:
    $this->link "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9)."/".$this->dir.$id."_".$this->files['name']; 
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

  36. #36
    User
    Data Registrazione
    May 2012
    Località
    MILANO
    Messaggi
    15
    Avevo individuato il posto ma da inesperto non conoscevo il codice per aggiungere "/"...
    Grazie davvero per il tempo che ci dedichi..

  37. #37
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    5,916
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    E' un piacere.
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
    Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.