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

Discussione: rinominazione random

  1. #1
    Utente di HTML.it L'avatar di mud
    Registrato dal
    Jun 2004
    Messaggi
    414

    rinominazione random

    ciao a tutti

    ho un file php
    Codice PHP:
    <?php
    //create the directory if doesn't exists (should have write permissons)
    if(!is_dir("./folder")) mkdir("./folder"0755); 
    //move the uploaded file
    move_uploaded_file($_FILES['Filedata']['tmp_name'], "./folder/".$_FILES['Filedata']['name']);
    chmod("./folder/".$_FILES['Filedata']['name'], 0777);
    ?>
    che carica sul server un immagine selezionata dal hardisk, ora siccome chiunque potrà aggiungere la sua immagine, come posso fare a rinominare automaticamente il file evtando che si sovrascrivino file con lo stesso nome?

    vorrei fare in modo che al nome dell'immagine caricata si aggiungesse una stringa composta da una serie di numeri scelti a caso

    non so come si scrive ma il concetto dovrebbe essere:
    file.name+rand(0,100)

    grazie

  2. #2
    $nomegeneratoacaso = $_FILES['Filedata']['name'] . rand(0,100);

    Questo è quello che hai scritto tu... è vero che è molto improbabile che ci siano due utenti che fanno l'upload di un file con lo stesso nome e che esca lo stesso numero da 0 a 100 ma è possibile.. io farei così:

    $nomegeneratoacaso = $_FILES['Filedata']['name+] . md5(time());

    così è ancora più improbabile (anche se è vero che il nome del file è dell'ordine di 16 (o 32, non ricordo) caratteri più lungo...

    vedi tu!

    ciaoo
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  3. #3
    Utente di HTML.it L'avatar di mud
    Registrato dal
    Jun 2004
    Messaggi
    414
    scusami forse è l'orario un pò avanzato
    ma come si traduce il tuo script nel mio file php?
    Codice PHP:
    <?php 
    //create the directory if doesn't exists (should have write permissons) 
    if(!is_dir("./folder")) mkdir("./folder"0755); 
    //move the uploaded file 
    move_uploaded_file($_FILES['Filedata']['tmp_name']. md5(time()), "./folder/".$_FILES['Filedata']['name']. md5(time())); 
    chmod("./folder/".$_FILES['Filedata']['name']. md5(time()), 0777); 
    ?>
    così va bene?
    ma che significa md5(time())?cosa fa precisamente

    cmq grazie mille

  4. #4
    questa funzione restituisce un codice alfanumerico univoco di circa 12 cifre, senza il rischio pratico di creazione di valori duplicati:

    Codice PHP:
    /*
        Restituisce un codice alfanumerico univoco di almeno 12 cifre.
        Converte in base 36 un microtime.
    */
    function unique_id_alphanum() {
        
    $now = (string)microtime();
        
    $now explode(' '$now);
        
    $unique_id $now[1].str_replace('.'''$now[0]);
        unset(
    $now);
        
        return 
    strtoupper(base_convert($unique_id1036));


  5. #5
    no no così non funziona... stai cercando di recuperare un file che non esiste... ti propongo due versioni diverse: quella che dicevo io prima e quella (forse migliore) di OhMyGod:

    versione "irais":
    Codice PHP:
     <?php
    //create the directory if doesn't exists (should have write permissons)
    if(!is_dir("./folder")) mkdir("./folder"0755);
    //move the uploaded file
    move_uploaded_file($_FILES['Filedata']['tmp_name'], "./folder/" $_FILES['Filedata']['name'] . md5(time()));
    chmod("./folder/".$_FILES['Filedata']['name']. md5(time()), 0777);
    ?>
    versione "OhMy": (scusa l'abbreviazione amichevole :P)
    Codice PHP:
     <?php

    /*
        Restituisce un codice alfanumerico univoco di almeno 12 cifre.
        Converte in base 36 un microtime.
    */
    function unique_id_alphanum() {
        
    $now = (string)microtime();
        
    $now explode(' '$now);
        
    $unique_id $now[1].str_replace('.'''$now[0]);
        unset(
    $now);
        
        return 
    strtoupper(base_convert($unique_id1036));
    }

    //create the directory if doesn't exists (should have write permissons)
    if(!is_dir("./folder")) mkdir("./folder"0755);
    $codiceunivoco unique_id_alphanum();
    //move the uploaded file
    move_uploaded_file($_FILES['Filedata']['tmp_name']), "./folder/".$_FILES['Filedata']['name'] . $codiceunivoco);
    chmod("./folder/".$_FILES['Filedata']['name']. $codiceunivoco0777);
    ?>
    Dove sta la differenza? La mia versione crea una stringa piuttosto lunga prendendo un timestamp (la funzione time() ), criptandola in md5 (algoritmo di crittazione ad una via, è inutile il suo scopo in questo ambito, ma è comodo per generare una stringa alfanumerica) e poi la attacca al nome del file uploadato.
    Quella di OhMyGod genera una stringa di 16 caratteri (tutti maiuscoli, occhio se hai un server linux) che viene poi attaccata allo stesso modo alla fine del nome del file.

    In entrambi i casi **occhio alle estensioni**.
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  6. #6
    Utente di HTML.it L'avatar di mud
    Registrato dal
    Jun 2004
    Messaggi
    414
    grazie a Tutti x le risposte

    ho provato entrambi i metodi:

    codice di OhMyGod : mi dice di aver caricato l'immagine ,ma in realtà non ha caricato niente, inoltre non visualizza più l'anteprima dell'immagine caricata

    (volevo precisare che il form di upload è fatto in Flash, non so forse può essere importante saperlo..)

    codice di iraiscoming223: mi dice di aver caricato l'immagine ,ma non visualizza più l'anteprima, inoltre l'immagine viene caricata ma le 12 cifre vanno ad aggiungersi all'estensione, immagine.jpgbjbjbsjdbfcgzyg (una cosa così insomma)

    pensavo se era possibile far archiviare le immagini considerando i numeri a cui sono arrivate quelle nella cartella di destinazione (visto, che io le ho archiviate in ordine numerico), in questo modo non si avrebbe mai uno stesso file, mi basterebbe che venisse visualizzato il nome suggerito, e che fosse impedito al'utente di scrivere jun numero minore o maggiore di quello suggerito...

    boh, cmq adesso anche flash comincia a dare inumeri ieri funzionava tutto, oggi sono al punto di partenza!

    ancora grazie!

  7. #7
    Utente di HTML.it L'avatar di mud
    Registrato dal
    Jun 2004
    Messaggi
    414
    per quanto riguarda l'estensione ho risolto aggiungendo prima il codice di generazione random

    Codice PHP:
    <?php 
    //create the directory if doesn't exists (should have write permissons) 
    if(!is_dir("./public/3dgallery/high_res")) mkdir("./public/3dgallery/high_res"0755); 
    //move the uploaded file 
    move_uploaded_file($_FILES['Filedata']['tmp_name'], "./public/3dgallery/high_res/" .rand(0,1000). $_FILES['Filedata']['name'] ); 
    chmod("./public/3dgallery/high_res/"rand(0,1000).$_FILES['Filedata']['name'], 0777); 
    ?>
    adesso mi aggiunge tre cifre a caso prima del nome,
    purtroppo non funziona più l'anteprima in flash ma risolverò sul forum dedicato

    Ps. è possibile creare con un file php da un upload di un immagine, una thumbnail di dimensioni stabilite e metterla in una specifica cartella?

  8. #8
    si, è possibile se mi rispondi entro le 2230 eheheh
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  9. #9
    Utente di HTML.it L'avatar di mud
    Registrato dal
    Jun 2004
    Messaggi
    414
    ti rispondo da qui eventualmente può servire a qlcn altro

    ti ringrazio x la disponibilità ..grande

    allora io con questo script
    Codice PHP:
    <?php 
    //create the directory if doesn't exists (should have write permissons) 
    if(!is_dir("./public/3dgallery/high_res")) mkdir("./public/3dgallery/high_res"0755); 
    //move the uploaded file 
    move_uploaded_file($_FILES['Filedata']['tmp_name'], "./public/3dgallery/high_res/" .rand(0,1000). $_FILES['Filedata']['name'] ); 
    chmod("./public/3dgallery/high_res/"rand(0,1000).$_FILES['Filedata']['name'], 0777); 
    ?>
    faccio un upload rinominando il file ...e fin qui ci siamo

    adesso vorrei che contemporaneamente venisse creata una thumb 75x75px da inserire nella directory ./public/3dgallery/thumbs/ e che abbia lo stesso nome di quella ad alta risoluzione
    (qui mi preoccupa un pò la rinominazione random, non vorrei che definisse due nomi diversi)

    tutto qui
    senza impegno

  10. #10
    Utente di HTML.it L'avatar di mud
    Registrato dal
    Jun 2004
    Messaggi
    414
    ora ti dico dove ero rimasto
    Codice PHP:
    ]<?php 
    if(isset($_FILES['imagewn'])) 

    $nuovo_nome rand(0,100).$_FILES['Filedata']['name'] ;
      
    //create the directory if doesn't exists (should have write permissons) 
    if(!is_dir("./public/3dgallery/high_res")) mkdir("./public/3dgallery/high_res"0755); 
    //move the uploaded file 
    move_uploaded_file($_FILES['Filedata']['tmp_name'], "./public/3dgallery/high_res/" .rand(0,1000). $_FILES['Filedata']['name'] ); 
    chmod("./public/3dgallery/high_res/"rand(0,1000).$_FILES['Filedata']['name'], 0777);
    createthumb("./public/3dgallery/high_res/" $nuovo_nome); 
    }

    function 
    createthumb($uploaded_file

         
        
    $unic_string md5(time()); //Lo uso per attribuire un nome unico al filename     
        # Controllo dell'estensione per vedere quale funzione utilizzare e definizione nomeunivoco 
        
    $ext strtolower(end(explode('.'$uploaded_file))); 
         
        
    //Definizione VARIABILI      
        
    $immgrande_path "./public/3dgallery/high_res/"//Il percorso di dov'è salvata l'immagine originale 
        
    $immgrande "1_" $unic_string "." $ext//Il nome dell'immagine originale 
        
    $immpiccola_path "./public/3dgallery/thumbs/";
        
    //$immpiccola_path = $immgrande_path; //Il percorso dov'è salvata l'immagine piccola (che sarà uguale a quello in cui è salvata l'immagine grande) 
        
    $immpiccola $immgrande;
        
    //$immpiccola = "thumb_1_" . $unic_string . "." . $ext; //Il nome da attribuire all'immagine piccola 
        
    $grandeabs $immaginegrande_path $immgrande//Il percorso assoluto (sul server) del file immagine GRANDE 
        
    $piccolaabs $immpiccola_path $immpiccola//Il percorso assoluto (sul server) del file immagine PICCOLA 
        
    $httpurl_big "http://www.satisfactionbox.com/public/3dgallery/high_res/$immgrande"//Percorso http del file immagine grande 
        
    $httpurl_small "http://www.satisfactionbox.com/public/3dgallery/thumbs/$immpiccola"//Percorso http del file immagine piccola 


        
        // Qui dovrebbe rinominare il file immagine inviato secondo le variabili indicate sopra 
        
    rename("$immaginegrande_path/$uploaded_file"$grandeabs); 

        
    // E qui controlla, appunto, che il lavoro sia stato fatto 
        
    if(file_exists($grandeabs)) 
        { 
             if (
    $ext == 'jpg' || $ext == 'jpeg')  createjpg_thumb() // Qui ridimensiona l'immagine 
        

        else 
    //Nel caso ritorni errore... 
            
    create_alert("Impossibile trovare il file source!"); //Questa è un'altra funzione che crea una finestra js di errore. 

    }

    ?>
    è un minestrone di codici che ti appartengono e che ho trovato un pò qua e un pò la...

    ho cambiato la dir e invece di lasciare invariata la dir e cambiare il nome io ho cambiato la dir e ho lasciato ad entrambi i file lo stesso nome (è necessario per las di flash..)

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.