Visualizzazione risultati 1 fino 6 di 6

Discussione: Hosting creato da me

  1. #1
    Guest

    Predefinito Hosting creato da me

    Ragazzi ho creato un sito per hostare file!
    Però ho notato che se carico un file con lo stesso nome dell'altro si sovrascrive il primo, mi potete aiutare con il codice php che rileva il nome del file e quindi da un avviso di rinominare il file?
    Vi do il sorgente di upload.php

    Codice PHP:
    <?
    $dimensione_massima
    =10000000; //dimensione massima consentita per file in byte -> 1024 byte = 1 Kb
    $dimensione_massima_Kb=$dimensione_massima/1024;
    $cartella_upload="upload/"; //cartella in cui eseguire l'upload (controllare permessi scrittura)
    // percorso cartella relativo $cartella_upload="upload/";
    $filtrare=1; //filtrare x estensioni ammesse? 1=si 0=no
    $array_estensioni_ammesse=array('.jpg','.jpeg','.gif','.png'); //estensioni ammesse

    if(!isset($_FILES['file1']) || $_FILES['file1']['size']==0){
    echo
    "Nessun file selezionato per l'upload";
    }elseif(
    $_FILES['file1']['size']>$dimensione_massima){
    echo
    "Il file selezionato per l'upload supera dimensione massima di $dimensione_massima_Kb Kb";
    }else{
    $nome_file=$_FILES['file1']['name'];
    $errore="";
    if(
    $filtrare==1){
    $estensione = strtolower(substr($nome_file, strrpos($nome_file, "."), strlen($nome_file)-strrpos($nome_file, ".")));
    if(!
    in_array($estensione,$array_estensioni_ammesse)){
    $errore.="Upload file non ammesso. Estensioni ammesse: ".implode(", ",$array_estensioni_ammesse)."<br/>";
    }
    }
    if(!
    file_exists($cartella_upload)){
    $errore.="La cartella di destinazione non esiste</br>";
    }

    if(
    $errore==""){
    if(
    move_uploaded_file($_FILES['file1']['tmp_name'], $cartella_upload.$_FILES['file1']['name'])){
    chmod($cartella_upload.$_FILES['file1']['name'],0777); //permessi per poterci sovrascrivere/scaricare
    echo "Operazione eseguita con successo. <br> Upload riuscito. <br></br>

    Link immagine: http://hostingando.altervista.org/upload/
    $nome_file";
    }else{
    echo
    "Impossibile effettuare l'upload del file";
    }
    }
    }


    ?> <br> </br>
    -Grazie a tutti quelli che mi aiutano!
    Ultima modifica di dreadnaut : 13-06-2012 alle ore 14.34.58 Motivo: + tag [php]

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

  3. #3
    Guest

    Predefinito

    Per fare una verifica e chiedere un altro nome per il file devi interrompere lo script se è presente un file con lo stesso nome.

    Potresti procedere in diverse direzioni:

    1) Verifichi, prima ancora di eseguire l'upload, se sul server esiste già un file con lo stesso nome e, in caso positivo, chiedi subito di rinominarlo, il tutto usando AJAX.
    PRO: La verifica la fasi prima del processo di caricamento così devi solo concentrati sull'upload.
    CONTRO: Se il browser ha JS disattivato, il controllo non funziona e devi aggirare usando un'alro metodo.

    2) Durante il processo di gestione dell'upload, quando trovi un file che esiste già, rinomini il file a piacere tuo (magari gli appendi alla fine una stringa con data-ora), ti conservi il dato e rimandi l'utente ad una pagina per la gestione dell'evento, dove chiederai un nuovo nome, e una volta ottenuto il dato prosegui rinominando il file "temporaneo" col il nuovo nome.
    PRO: non sovrascrivi i files e lasci all'utente la possibilità di scegliere il nome. Funziona sempre, anche con JS disattivati.
    CONTRO: devi gestire l'evento interrompendo il flusso che avevi previsto.

    3) Quando trovi un nome duplicato, procedi a rinominare il file, e comunichi all'utente il nuovo nome.
    PRO: come nel punto 2, senza dovere interrompere il flusso logico della lavorazione.
    CONTRO: i files potranno avere nomi non voluti dagli utenti.

    4) Salvi SEMPRE i file rinominandoli, in modo da non trovarti nella situazione di avere file con lo stesso nome, e conservi l'associazione nome_voluto/nome_file in un db.
    PRO: Non ti troverai ad avere la situazione con nomi file duplicati e/o sovrascritture non volute.
    CONTRO: La gestione si complica un po' dovendo prevedere un db (o comunque un motore di memorizzazione) da utilizzare per la gestione dei files (navigazione, upload, cancellazione, ecc..)

  4. #4
    Guest

    Predefinito

    Scusate ma io con il php non ci vado molto d'accordo quindi potete spiegare meglio il codice e se potete darmi il sorgente? Grazie mille comunque simpleticket!

  5. #5
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Potevi chiedermelo direttamente in chat (sono Lucart98, il tuo migliore amico )!
    Io ti consiglio di fare così:
    - Avendo il file img.png, e non essendoci altri file con questo nome, lo memorizzi come img.png.
    - Se invece c'è un file che si chiama img.png lo rinomini in img_1.png.
    - Se l'utente carica img.png ed esistono sia img.png che img_1.png, dovrai rinominare il file in img_2.png: facendo in questo modo ti consiglio di eseguire un ciclo while che si ripete finché non viene trovato un nome libero.
    Se anche gli altri sono d'accordo, ti posto il codice.
    Ciao!

  6. #6
    Guest

    Predefinito

    Ciao luca! :D
    Grazie per avermi aiutato non volevo disturbarti troppo quindi mi sono rivolto al forum che qui sono i migliori!
    Ovviamente su facebook c'è un gruppo dove sono bravissimi come qui, mi hanno fatto risolvere una cosa un po' incasinata in pochi minuti!

    edit:

    Luca se gli altri sono d'accordo quindi mi posti il codice?
    Ultima modifica di dreadnaut : 14-06-2012 alle ore 15.25.51 Motivo: usa il tasto Edita --->

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •