Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: rename file upload

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542

    rename file upload

    Ciao a tutti,
    ho provato a rinominare i file subito dopo aver fatto l'upload ma non funziona.

    posto il codice, potete dirmi dove sbaglio?
    Ho bisgogno di cambiare solo il nome mantenendo l'estensione (.jpg)

    for($i=1;$i<=5;$i++) {
    if (isset($_FILES['foto'.$i])){
    $fileupload_temp = $_FILES['foto'.$i]['tmp_name'];
    $fileupload_name = $_FILES['foto'.$i]['name'];
    $fileupload_size = $_FILES['foto'.$i]['size'];
    $fileupload_type = $_FILES['foto'.$i]['type'];
    $fileupload_error = $_FILES['foto'.$i]['error'];
    $target_path = $path.basename($fileupload_name);
    if(move_uploaded_file($fileupload_temp, $target_path)){
    rename($target_path, $path."foto".$i);
    $trasf[$i]=1;
    }
    }
    }

    Ho provato anche con:
    rename($target_path, $path."foto".$i."jpg");

    Grazie
    Guidino

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: rename file upload

    Originariamente inviato da guidino
    Ciao a tutti,
    ho provato a rinominare i file subito dopo aver fatto l'upload ma non funziona.

    posto il codice, potete dirmi dove sbaglio?
    Ho bisgogno di cambiare solo il nome mantenendo l'estensione (.jpg)

    for($i=1;$i<=5;$i++) {
    if (isset($_FILES['foto'.$i])){
    $fileupload_temp = $_FILES['foto'.$i]['tmp_name'];
    $fileupload_name = $_FILES['foto'.$i]['name'];
    $fileupload_size = $_FILES['foto'.$i]['size'];
    $fileupload_type = $_FILES['foto'.$i]['type'];
    $fileupload_error = $_FILES['foto'.$i]['error'];
    $target_path = $path.basename($fileupload_name);
    if(move_uploaded_file($fileupload_temp, $target_path)){
    rename($target_path, $path."foto".$i);
    $trasf[$i]=1;
    }
    }
    }

    Ho provato anche con:
    rename($target_path, $path."foto".$i."jpg");

    Grazie
    Ma non ti da nessun errore?

    E poi perchè rinominare il file subito dopo l'upload, non puoi dargli il nome subito?

    In ogni caso rename se prende degli argomenti errati dovrebbe darti un errore..

    ciao

  3. #3
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Quando fai l'upload di un file hai bisogno di $_FILES['upload']['tmp_name'] e $_FILES['upload']['name'] che rappresentano rispettivamente il file VERO E PROPRIO da mettere sul server e il NOME DEL FILE da mettere sul server; ora, di default, in $_FILES['upload']['name'] hai il nome del file che carichi dalla finestra di dialogo; riassegnando un valore a $_FILES['upload']['name'] ti ritrovi sul server il file da te selezionato rinominato col valore appena assegnato...spero di essere stato chiaro, cmq è più facile e farsi che a dirsi

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542

    rename upload file

    grazie per la risposta,
    ma devo gestire io l'estensione o rinomino solo il nome del file?

    Su alcuni pc il SO è inpostato in modo che si vede anche l'esensione dei file.

    Mi potresti fare un esempio?

    Grazie
    Guidino

  5. #5
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Ovviamente devi tener conto anche dell'estensione del file...ad esempio puoi fare:

    Codice PHP:
    /* This script provide to rename a file to upload */
    function rename_file($file) {
        
    // Take file extension
        
    $tmp explode("."$file);
        
    $ext array_pop($tmp);
        
    // Rename
        
    $file 'new-file-name.'.$ext;
        return 
    $file;


  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    Ora ho capito perchè non mi funzionava questo sccript:

    Codice PHP:
    $day date("d",time());
            
    $month date("m",time());
            
    $year date("y",time());
            if ( 
    move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile.$year.$month) ) {
              
    chmod$uploadfile0777 );
              
    $ok true;
            } else {
              
    $ok false;
            } 

    In pratica mi aggiunge la data dopo l'estensione.


    Come faccio ad integrare il tuo suggerimento nel mio script ?

  7. #7
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Così dovrebbe andare...anche se scritto di getto...

    Codice PHP:
    $day date("d",time());
            
    $month date("m",time());
            
    $year date("y",time());
            if ( 
    move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile.$year.$month.
                  
    rename_file($_FILES['userfile']['name'][$i]))) {
              
    chmod$uploadfile0777 );
              
    $ok true;
            } else {
              
    $ok false;
            } 

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    Ti ringrazio in anticipo xchè prima di una settimana non potrò provarlo
    A presto.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    Si anche a me sembrava la via giusta ma mi da errore...

    Fatal error: Call to undefined function rename_file() in H:\_Works\Accessori\CMS\Simple Php Blog\Mods\v15c\upload_img_cgi.php on line 95

    La linea 95 è proprio quella modificata

    posto l'intero script:

    Codice PHP:
    <?php
      
    // ---------------
      // INITIALIZE PAGE
      // ---------------
      
    require_once('scripts/sb_functions.php');
      global 
    $logged_in;
      
    $logged_in logged_intruetrue );
      
      
    read_config();
      
      require_once(
    'languages/' $blog_config'blog_language' ] . '/strings.php');
      
    sb_language'upload_img' );
      
      
    // ---------------
      // POST PROCESSING
      // ---------------
      
      
    for ($i=0;$i<count($_FILES['userfile']);$i++) {
      
        if (
    $ok == null) {
          
    $ok false;
        }
        
        if (
    is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
          if ( 
    $_FILES'userfile' ][ 'error' ][$i] == ) {         // se folder non esiste lo crea ndrob
            
    if (!file_exists(IMAGES_DIR)) {
              
    $oldumask umask(0);
              @
    mkdir(IMAGES_DIR0777 );
              @
    umask($oldumask);
            }
             
    // Mod rob: aggiunte le parentesi quadre alla sostituzione con underscore (le parentesi quadre nell'immagine vanno in                  // conflitto con il tag per inserire l'immagine nel post) 
             // Old: $uploadfile = $uploaddir . preg_replace("/ /","_",$_FILES['userfile']['name'][$i]);
            
    $uploaddir IMAGES_DIR;
            
    $char = array(' ',"]","[");
            
    $uploadfile $uploaddir str_replace($char,"_",$_FILES['userfile']['name'][$i]);
            
            
    /* Mod rob: controllo presenza altro file con lo stesso nome (Sostituita dall'aggiunta della data)
            if (file_exists($uploadfile)) {
              echo('Esiste già un immagine con lo stesso nome.');
              exit;
            } */
            
            
    if ( @getimagesize($_FILES['userfile']['tmp_name'][$i]) == FALSE ){
              echo(
    'Il file selezionato non è un file immagine valido');
              exit;
            }
            
            if (
    strpos($uploadfile".") === false) {
              echo(
    'File does not have an extension');
              exit;
            }
            
            if (
    strpos($uploadfile".") == 0) {
              echo(
    'File begins with "."');
              exit;
            }
            
            if (
    strrpos($uploadfile".") == strlen($uploadfile)-1) {
              echo(
    'File ends with "."');
              exit;
            }
            
            
    $extension strtolower(substr(strrchr($uploadfile"."), 1));
            
            if (
    strlen($extension) == 0) { // Not really needed...
              
    echo('File ends with "." and does not have an extension');
              exit;
            }
            
            
    // Allowed files
            
    $upload_valid_extentions = array( "jpg""gif""png" );
            
    $extension strtolower(substr(strrchr($uploadfile"."), 1));
            if (!
    in_array($extension$upload_valid_extentions)) {
              echo(
    'That filetype is not allowed');
              exit;
            }
            
            
    // Explicitly denied files (we don't really need this anymore...) - provided by ReZEN (rezen@xorcrew.net)
            
    $upload_denied_extentions = array( "exe""pl""php""php3""php4""php5""phps""asp","cgi""html""htm""dll""bat""cmd" );
            foreach (
    $upload_denied_extentions AS $denied_extention) {
              if(
    $denied_extention == $extension) {
                echo(
    'That filetype is not allowed');
                exit;
              }    
            }
            
    // if ( move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile.rand(1,1000)) ) {

            
    $day date("d",time());
            
    $month date("m",time());
            
    $year date("y",time());
            
    $hourH date("H",time());
            
    $houri date("i",time());
            
    $hours date("s",time());
            if ( 
    move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile.$year.$month
                  
    rename_file($_FILES['userfile']['name'][$i]))) {
              
    chmod$uploadfile0777 );
              
    $ok true;
            } else {
              
    $ok false;
            }
          }
        }
      }
      if ( 
    $ok === true ) {
        
    redirect_to_url'add.php' );
      }
      
    // ------------
      // PAGE CONTENT
      // ------------
      
    function page_content() {
        global 
    $lang_string$user_colors;
        if ( 
    $ok !== true ) {
          echo( 
    $lang_string'error' ] . $ok '

    );
        }
        
    //echo(count($_FILES['userfile']));
        //print_r($_FILES['userfile']);
        //echo($_FILES['userfile']['name'][0]);
        
    echo( '[url="index.php"]' $lang_string'home' ] . '[/url]

    );
      }
      
      
    // ----
      // HTML
      // ----
    ?>
      <?php echo( get_init_code() ); ?>
      <?php require_once('themes/' $blog_theme '/user_style.php'); ?>
      
      <title><?php echo($blog_config'blog_title' ]); ?> - <?php echo( $lang_string'title' ] ); ?></title>
    </head>
      <?php 
        
    // ------------
        // BEGIN OUTPUT
        // ------------
        
    theme_pagelayout();
      
    ?>
    </html>
    Nota che quasi all'inizio c'è già un controllo che manipola il file se trova dei caratteri speciali (tipo lo spazio che non è supportato) non vorrei che fosse quello a dare noia al resto del codice.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119

    Nessun idea ?

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.