Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Rinomina un file in modo progressivo - PHP

    Salve a tutti,

    In una pagina php del mio sito ho caricato un semplice form per l'upload di file "image".
    La mia necessità è di inserire la funzione di rinomina automatica del file al caricamento.
    Il nuovo nome deve essere sempre progressivo per ogni file che carico.
    Esempio: se il primo file che carico si chiama "prova.jpg" deve diventare "0001.jpg", se il secondo file si chiama "gino.jpg" deve diventare "0002.jpg" e così via per ogni file.

    Questo è il codice php della mia pagina di controllo ed esecuzione.

    <?

    if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
    if(!isset($_SERVER)) $_SERVER = $HTTP_SERVER_VARS;

    $upload_dir = $_SERVER["DOCUMENT_ROOT"] . "/image/";
    $new_name = ""
    $file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];

    if(trim($_FILES["upfile"]["name"]) == "") {
    die("Non hai indicato il file da uploadare !");
    }

    $allowed_types = array("image/gif","image/x-png","image/pjpeg","image/jpeg");
    if(!in_array($_FILES["upfile"]["type"],$allowed_types)) {
    die("Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode(",", $allowed_types) . ".");
    }

    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 l'esistenza o i permessi della directory dove fare l'upload.");
    } else {
    die("Problemi nell'upload del file " . $_FILES["upfile"]["name"]);
    }

    echo "L'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente";

    ?>


    Grazie mille in anticipo.
    ..:: CISCO7EVEN ::..
    www.evolve-design.com
    info@evolve-design.com

  2. #2
    beh, devi modificare la definizione di $file_name ($file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"] con il nome in cui il file dovà avere alla fine.

    Per calcolarlo hai due strade:
    Se hai un DB, crei una tabella
    codice:
    UploadedFiles (
      id int not null auto_increment, 
      fileName int not null unique, //Se i nomi dei file saranno numerici ti conviene usare un integer, è più facile farci le ricerche
    )
    A questo punto fai una select:
    SELECT max(fileName) FROM UploadedFile;

    e metti come nome
    $file_name = "".($raw['max(fileName)'] + 1).".jpg"; //mettici un controllo per l'estensione

    L'alternativa è leggere il contenuto della cartella di Upload, con:
    Codice PHP:
    $dir $_SERVER["DOCUMENT_ROOT"] . "/image/";

    $nomeFile 0;
    // Open a known directory, and proceed to read its contents
    if (is_dir($dir)) {
        if (
    $dh opendir($dir)) {
            while ((
    $file readdir($dh)) !== false) {
                if(
    $file != '.' && $file != '..')
                {
                    
    $spitted split('\.'$file);
                    
    $val intval($splitted[0]);
                    if(
    $val $nomeFile)
                        
    $nomeFile $val;
                }
            }
            
    closedir($dh);
        }

    Io ti consiglio la prima, che è molto più usabile.

  3. #3
    se volete un consiglio, invece di usare un sistema progressivo un bel

    sha1(uniqid(microtime(), true))

    è molto meglio
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    Credo abbia bisogno di nomi progressivi per ordinare le immagini caricate...
    Ma, in effetti, sarebbe meglio usare un tabella del DB per salvare i nomi dei file in un ordine particolare

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.