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

    Consiglio su nome files in upload

    in fase di upload devo assegnare un nome ai vari files.
    all'inizio avevo pensato a una cosa del genere:
    Codice PHP:
    function upload($i$cartella$maxSize$acceptType) {
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $destinazione $cartella $_POST['articolo'] . countImg() . strrchr($_FILES['file']['name'][$i], '.');
            if (
    $_FILES['file']['size'][$i] <= $maxSize) {
                if (
    in_array($_FILES['file']['type'][$i], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                        return 
    "File caricati";
                    } else {
                        return 
    "Errore nell'upload";
                    }
                } else {
                    return 
    'Tipo file non valido';
                }
            } else {
                return 
    'File troppo grande';
            }
        } elseif (
    $_POST['upload_img']) {
            return 
    'Non ci sono file da inserire';
        }
    }

    function 
    countImg() {
        
    $count 0;
        
    $hd opendir("../img_articoli");
        while ((
    $files_count readdir($hd)) !== false) {
            if (
    $files_count[0] != ".") {
                
    $count++;
            }
        }
        return 
    $count;

    cioè le immagini prendono il nome dell'articolo a cui corrispondono (lo prendono da una dropdown) più un numero corrispondente al numero di file già presente.
    poi però ho pensato che se cancello un files, quello successivo avrà lo stesso numero di quello precedente.
    come posso fare per essere sicuro di assegnare un nome univoco ai files?
    il nome dell'articolo ci deve stare, è la parte dopo che mi crea problemi.

  2. #2
    Avevo anch'io questo problema, e ho risolto con un semplice file di testo che funge da contatore, dove salvo un numero che aumenta progressivamente e che recupero e aggiorno ad ogni upload.

    Ecco il codice
    Codice PHP:
    // Apro il file contatore e leggo il contenuto
    $img_count = (int) @file_get_contents($FILENAME);
    // Incremento il contatore di 1 e lo salvo sul file
    ++$img_count;
    @
    file_put_contents($FILENAME$img_count);
    // Stabilisco il nome dell'immagine da salvare
    $img_name "immagine".$img_count.".jpg"
    Ovviamente una volta creato il file non lo devi modificare/cancellare, altrimenti perdi il conto.
    In alternativa puoi usare un database.

    Spero di esserti stato di aiuto

  3. #3
    molto interessante!!
    come alternativa avevo anche pensato ad ogni upload di attivare una funzione che crea un codice alfanumerico random di 5/6 cifre.
    c'è sempre però un minimo di incertezza sul fatto che il codice possa ripetersi.
    psneo che adotterò la tua soluzione.
    ti faccio sapere grazie!

  4. #4
    ok io avrei fatto così:
    Codice PHP:
    function upload($i$cartella$maxSize$acceptType) {
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $destinazione $cartella "pe2011-" countImg() . strrchr($_FILES['file']['name'][$i], '.');
            if (
    $_FILES['file']['size'][$i] <= $maxSize) {
                if (
    in_array($_FILES['file']['type'][$i], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                        return 
    "File caricati";
                    } else {
                        return 
    "Errore nell'upload";
                    }
                } else {
                    return 
    'Tipo file non valido';
                }
            } else {
                return 
    'File troppo grande';
            }
        } elseif (
    $_POST['upload_img']) {
            return 
    'Non ci sono file da inserire';
        }
    }

    function 
    countImg() {
        
    $FILENAME "../gallery/pe2011/count.txt";
        if (!
    file_exists($FILENAME)) {
            
    fopen($FILENAME'w+');
            
    fputs($FILENAME"");
            
    fclose($FILENAME);
        }
        
    $img_count = (int) @file_get_contents($FILENAME);
        ++
    $img_count;
        @
    file_put_contents($FILENAME$img_count);
        return 
    $img_count;

    pensi che possa andare?
    ho aggiunto la parte che controlla l'esistenza del file così nn mi sbaglio.

  5. #5

  6. #6
    in sostanza una cosa del genere potrebbe andare?
    Codice PHP:
    $destinazione $cartella uniqid("pe20011-") . strrchr($_FILES['file']['name'][$i], '.'); 

  7. #7

  8. #8
    Originariamente inviato da k.b
    provato.
    molto molto comodo.
    grazie per la dritta!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    2
    ciao, ho provato, ma non riesco a attivare la funzionalit�, c'� qualcuno che pu� aiutarmi, anche se il post � datato da tempo, si ringrazia anticipatamente

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    2
    ciao, anche se datato da tempo vorrei un aiutino se si può, non riesco a farlo funzionare, magari se si può avere completo il file, si ringrazia anticipatamente

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.