Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Consigli su nome immagini uplodate

    Per chi come me ha gusto nello spaccare il capello in tante piccole parti vi chiedo consigli circa la seguente quest:

    C'è uno script che carica delle immagini, attualmente le può caricare in due modi:

    1) form multiple
    2) file zip contenente le foto

    sia nel primo che nel secondo caso lo script prende (dal form multiplo o scompattando l'archivio) le foto e le sposta in una cartella nuova.

    Uso una cartella perchè in questo modo mi è facile visualizzare uno storico dei vari import, mostrare le ultime foto inserite e rimuovere foto, record del database e folder in una botta sola.

    Una volta compiute queste magiche operazioni e create le relative immagini ridimensionate (7 formati dal 48x64 a 640x480) salva sul db un record con i seguenti dati:

    body name del file (su un file del tipo nomefile.jpg per body name intendo "nomefile")
    dir name che lo contiene

    Veniamo al punto

    Come chiamo cartella e files?

    per le cartelle avevo pensato alla seguente soluzione:

    data nel formato yyyy-MM-dd_HH-mm-ss

    per il nome file avevo pensato ad una semplice progressione 001-999.jpg

    Quindi per esempio:

    2008-07-17_01-42-42/001.jpg
    2008-07-17_01-42-42/002.jpg
    2008-07-17_01-42-42/003.jpg

    Dubbi e perplessita

    E se l'utente vuole salvarsi l'immagine sul Desktop?

    Io oooodio le immagini che si chiamano 001.jpg (da pronunciarsi dopo aver indossato una tutina blu e un paio di occhiali anni 50)

    quindi avevo ripensato il nome file nel seguente modo:

    nomesito.it-nomefile.jpg

    ora però se uno scarica due file da due diversi folder questi possono avere lo stesso nome.

    Altra soluzione sarebbe usare un id univoco, ma non so se è sicuro usare l'id del database.

    Che ne pensate?
    Arjuna

    finding solutions

  2. #2
    Ciao, condivido la tua precisione quando realizzo un'applicazione :-)

    Dall'esigenza che descrivi trovo azzeccato il nome che dai alle cartelle. Non conosco il traffico ed il numero di utenti che possono accedere al sito e caricare le immagini, ma penso che sia improbabile avere un upload nello stesso momento. Nel caso metterei in piedi un meccanismo di verifica della cartella e della creazione di un nome univoco alternativo.

    Per i nomi dei file, un id autoincrementale associato ad un campo database mi sembra un'idea buona.
    Metterei anche io un prefisso, tipo NomeSito, in modo che il file sia nominato NomeSito-0001.jpg, così che anche il file salvato o anche solo indicizzato abbia anche minimamente un senso.

    Attenzione a dimensionare in modo opportuno questo contatore. Se pensi che possano essere 1.000 i file che verranno caricati... dimensiona il campo a 100.000 :-) starei molto largo

  3. #3
    Attualmente è quasi impossibile che due utenti carichino file nello stesso momento, però questo non vuol dire gran che...

    Potrei anche usare un valore incrementale da prelevare dalla tabella utenti e da aggiornare di volta in volta, ma resterebbe sempre la possibilità che un utente si colleghi da due browser e mi faccia due query, visto che può scompattare archivi zip non è difficile sputtanare tutto... certo, questa è paranoia, ma dico questo solo perchè credo sia una questione ricorrente in programmazione e quindi credo da qualche parte ci deve essere un pattern che la risolva...

    ma non so nemmeno con quali chiavi di ricerca googolare, ho provato un pò ma esce di tutto
    Arjuna

    finding solutions

  4. #4
    Ecco cosa ha partorito la mia mente malata:

    list($m, $s) = explode(" ",microtime());
    $newName = $s.substr($m,2);

    Che ve ne pare?

    in questo modo i nomi sono univoci, non sono eccessivamente lunghi e sono in ordine di esecuzione dello script.

    Microtime è affidabile, ho provato a fare:

    echo microtime();
    echo microtime();
    echo microtime();
    echo microtime();
    ...
    echo microtime();

    e i valori sono sempre diversi...

    che ve ne pare?
    Arjuna

    finding solutions

  5. #5
    Senza dubbio un nome univoco. In questo modo potresti anche non suddividere i file in cartelle. Eventualmente un cartella per ogni giorno :-) così è tutto più ordinato.

  6. #6
    avevo letto questa discussione giorni addietro ma non avevo trovato il tempo per rispondere

    suddividere le immagini in cartelle è ESSENZIALE, se queste sono molte (parlo di centinaia di migliaia)

    per creare il nome del file basta fare un bel

    md5(uniqid(microtime(), true))

    le cartelle le costruite usando cartella/sottocartella mettendo la prima lettera come nome della prima cartella mentre le prime due lettere come sotto cartella e poi dentro l'immagine

    facendo in questo modo mettete dentro il db l'hash e il tipo di immagine preso con getimagesize
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    ho fatto alcune prove.

    Non sono in grado di dirlo ma immagino che la tua soluzione sia più performante in termini di risorse.

    Ci sono due cose però che non so valutare:

    1) la stringa generata è in ordine crescente come quella che genero io? cioè, i file che ne risultano, vedendoli in una cartella ordinati per nome, hanno lo stesso ordine originale?

    2) esteticamente i soli numeri mi sembrano più ordinati di questo insieme di lettere e numeri

    Poi non ho capito il tuo discroso sulle cartelle, tu dici cartelle e sottocartelle e poi parli di lettere, ma secondo quale criterio fai sottocartelle e secondo quale criterio generi le lettere?

    Ti ringrazio per il tuo contributo, non conoscevo queste funzioni.
    Arjuna

    finding solutions

  8. #8
    Originariamente inviato da 99caos
    1) la stringa generata è in ordine crescente come quella che genero io? cioè, i file che ne risultano, vedendoli in una cartella ordinati per nome, hanno lo stesso ordine originale?
    assolutamente no ... è un hash

    2) esteticamente i soli numeri mi sembrano più ordinati di questo insieme di lettere e numeri
    non vedo a che serva ^^

    Poi non ho capito il tuo discroso sulle cartelle, tu dici cartelle e sottocartelle e poi parli di lettere, ma secondo quale criterio fai sottocartelle e secondo quale criterio generi le lettere?

    Ti ringrazio per il tuo contributo, non conoscevo queste funzioni.
    mmm io l'ho scritto il come generare cartelle e sotto cartelle e quali lettere usare nel post precedente ma lo rispiego ...

    mettiamo di avere un hash cosi

    acab124b1123b9a81947b9a8a5c13afd

    che corrisponde ad un immagine ... la cartella nella quale deve andare dentro deve essere di tipo

    .../path/to/images/a/ca/

    quindi verrebbe fuori qualcosa tipo

    .../path/to/images/a/ca/acab124b1123b9a81947b9a8a5c13afd

    in realtà i due livelli di cartelle le puoi generare con qualsiasi nomenclatura ti piaccia però, se pensi di avere tanti file, è fondamentale farlo perché altrimenti collassi il filesystem

    l'hash lo generi con quella riga di codice che ti ho postato prima
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #9
    Ottima questione. Presumo che il discorso funzioni sia si parli di immagini che di file generici. Secondo voi quanti file può "reggere" una sola cartella prima di fare casini?

  10. #10
    Originariamente inviato da daniele_dll
    assolutamente no ... è un hash
    non vedo a che serva ^^
    Mi occupo di fotografia anche se sono malato di programmazione, è quindi per me logico pensare di realizzare nomi file che abbiano più o meno senso o che siano almeno carini.

    Per quanto riguarda l'avere i file in ordine immagina di scaricare dal sito diverse foto che abbiano il nome dell'hash, quando le vai a rivedere esse non avranno l'ordine preimpostato sul server ma quello alfabetico del file system. Da un punto di vista del solo sito l'hash è indubbiamente potente ma se le foto appunto verranno anche scaricate il discorso cambia.

    per me gia è poco piacevole avere un file del tipo 35455498186519651.jpg
    come ho gia detto preferirei qualcosa tipo nomedominio.it-999999.jpg

    Certo, riconosco di essere un pò fuori luogo con questo tipo di richiesta ma almeno non fare l'hash?
    Perchè l'hash è così importante? Non basta il solo microtime?

    Originariamente inviato da daniele_dll
    mmm io l'ho scritto il come generare cartelle e sotto cartelle e quali lettere usare nel post precedente ma lo rispiego ...

    mettiamo di avere un hash cosi

    acab124b1123b9a81947b9a8a5c13afd

    che corrisponde ad un immagine ... la cartella nella quale deve andare dentro deve essere di tipo

    .../path/to/images/a/ca/
    Non comprendo ancora perchè due sotto cartelle e con quale criterio si dovrebbero generare cartelle e sotto cartelle.

    Posso immaginare uno scenario:

    /immagini/nomeutente/data_acquisizione/nomedominio.tld-yyyy-99999.jpg

    100.000 foto in un anno sono una bella cifra, certo che se devi fare una community da 100.000 utenti allora il discorso cambia.

    Originariamente inviato da Tobler
    quanti file può "reggere" una sola cartella prima di fare casini
    Be, molto dipende dal filesystem, ma di certo meno file ci sono meglio è. Dati non ne ho.
    Poi dipende anche da cosa intendi per casini: cali di performance sono gia un buon motivo per diminuire il numero di file in una cartella.
    Se poi per casini intendi crash di sistema o perdita di dati, be, questo non te lo so proprio dire.
    Arjuna

    finding solutions

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.