Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    190

    Dare nomi numerici ai files

    Mi servirebbe la funzione da aggiungere a queste sotto che generi un nome numerico al file caricato tramite Upload, cioè, per esempio carico un file che si chiama: "immagine.jpg" e tramite qualche funzione trasformi quel nome in un nome numerico, esempio : "30482025.jpg".

    Codice PHP:
    function filtranome($nomefile
    {
      
    // qui filtri con varie funzioni
      
    $nuovonome $nomefile
      
    $nuovonome str_replace(array(" "".",","), $nuovonome); // elimino alcuni caratteri
      
    $nuovonome strtolower($nuovonome); // tutto in minuscolo
      
      
    return ($nuovonome);
    }; 

  2. #2

  3. #3
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    PUOI dare nomi generati casualmente

    prima di cambiare file verifica che il nome file non esista gia , altrimenti avresti errore.

    QUESTO ESEMPIO PRESUME CHE IL FILE SIA NELLA STESSA DIRECTORY DELLO SCRIPT
    per percorsi diversi , oltre al nome mettere il percorso , e modificare la funzione filtranome

    codice:
    <?php
    
    function filtranome($nomefile)  
    { 
      // qui filtri con varie funzioni 
      $nuovonome = explode(".", $nomefile);
    
      $nuovonome [0]= rand(1000, 10000);
      $uscita=implode(".",$nuovonome);
       
      return ($uscita); 
    }
    
    $prova="file.txt";
    echo "***********************
    ";
    $n= filtranome($prova);
    
    if(!file_exists($n))  
        rename($prova,$n); 
    
    
    
    
    
    
    
    
    ?>
    dimmi se ti è stato utile
    Tecnologia

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Visto che lo snippet l'ho scritto io nell'altro post, ti passo lo stesso consiglio che ho messo lì e che evidentEmente non hai visto

    Codice PHP:
    function filtranome($nomefile)  {
      
    // qui filtri con varie funzioni 
      
    $nuovonome $nomefile;  
      
    $nuovonome str_replace(array(" "".",","), $nuovonome); // elimino alcuni caratteri 
      
    $nuovonome strtolower($nuovonome); // tutto in minuscolo 
      
    $nuovonome .= '_'.time();
      return (
    $nuovonome); 
    }; 
    che aggiunge in coda al nome "_" seguito da un timestamp... se poi vuoi solo la parte "numerica" togli i pezzi precedenti : )

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Che cosa c'e' di male ad usare il crc ?

    a mio avviso conviene questa funzione.... se poi hai 2 files con lo stesso nome avrai lo stesso codice e quindi puoi evitare sovrascritture eseguendo un push nel nome di un codice numerico finche non otrvi unaposizione libera....

    mah.......

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    no, scusa: non era "contro" il crc... intendevo solo aggiungere la riga in coda allo snippet (che ho scritto io in un altro post)... per la scelta dipende da cosa serve... usare un timestamp di solito è più "certo" per evitare conflitti e nel mio caso meglio perchè essendoci un filtraggio dei nomi dei file "Albero verde" e "alb ero ver de" sarebbero trasformati in "alberoverde" entrambi e quindi i conflitti sarebbero maggiori...

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    si capisco una buona soluzione potrebbe esser euna mescolanza di fattori

    [timestamp]_[crc32(filename)]_parsed(filename)_[suffix]

  8. #8
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    ciao eiyen , nella funzione che hai postato , c'è un errore con str_replace manca un parametro , poi il nome restituito non è tutto numerico ,come chiedeva l'autore mi pare !??

    posto il mio codice con correzzione , che evita che ci siano problemi se il nome file
    esiste già


    Codice PHP:


    <?php

    function filtranome($nomefile)  

         
    $nuovonome explode("."$nomefile);

         
    $nuovonome [0]= rand(100000000400000000);
         
    $uscita=implode(".",$nuovonome);
       
          return (
    $uscita); 
    }

    $prova="file.gif";
    echo 
    "***********************
    "
    ;
    while(
    1//loop fino a quando il nome file generato non esiste
    {
          
    $nfiltranome($prova);

          if(!
    file_exists($n)) 
          { 
                   
    rename($prova,$n); 
                   break;
          }

    }






    ?>
    Tecnologia

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    non sei mai sicuro al 100% di non imbroccare un nome esistente

    io farei una cosa del tipo

    Codice PHP:
    $fname $file["name"] ;
    $newFname "" ;
    do
    {
         
    $newFname crc32$fname ).rand(100,1000).".[estensione]" ;
    }
    while( 
    file_exists($path.$newFname ) )

    cosi siamo sicuri al 100& ; 

  10. #10

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.