Memorizzazione delle immagini caricate per il sito web

1

Sto sviluppando un sito Web (utilizzando PHP, JS e MYSQL) che consente all'utente di caricare immagini. I miei requisiti sono i seguenti:

  1. L'utente può caricare 1 o più immagini alla volta.
  2. Il sito Web è in grado di salvare le immagini originali e utilizzare le immagini originali per creare una versione ridimensionata, ad es. 500x500 px

Cosa ho fatto

Ho bisogno di alcune opinioni riguardo alle decisioni che ho preso / implementato come di seguito, fammi sapere se è giusto o sbagliato:)

  1. Non ho archiviato le immagini nel database come BLOB.
  2. Ho una tabella immagini nel database che memorizza il nome dell'immagine e il percorso dell'immagine. Il percorso dell'immagine è una stringa che sarà il nome esatto della cartella nel filesystem, il nome dell'immagine è il nome dell'immagine caricata dall'utente. Combinare entrambi creerà un percorso diretto al file system.
  3. Usando il metodo sopra sono in grado di interrogare le immagini come se fossero memorizzate nel mio database, ma in realtà sto solo mappandole.
  4. Il mio approccio è corretto? Sto pensando a JSON ma è utile in questo caso?
posta 4 Leave Cover 12.08.2016 - 10:15
fonte

1 risposta

2

I did not store the images in database as blobs.

Ok

I have an image table in the database which store image name and image path. The image path is a string which will be the exact folder name in the filesystem, the image name is the name of the image uploaded by user.

Quindi, se 2 utenti caricano un mommy.png, avrai un conflitto vero?

Solitamente per non avere conflitti e non avere enormi perdite di prestazioni quando si ha una grande quantità di immagini nella stessa cartella (dipende dal tipo di filesystem) si crea una cartella intermedia che il nome corrisponde ad un hash.

Esempio: ho un sistema che calcola un MD5 sul mio file che è come '123456789ab ...' sarà archiviato sotto 12/34/56 / 123456789ab '.

Per recuperare il riempimento ho un url dedicato che assomiglia a link .

Nota: l'utilizzo dell'id del database esporre il tuo sito web per essere facile da raccogliere considera:

  • generare un uuid per ciascuna immagine e usarlo come identificatore se tutte le immagini sono pubbliche
  • controlla l'accesso all'immagine a seconda di chi è connesso.

Is my approach correct? I am thinking about JSON but is it useful in this case?

Nop JSON non è progettato per trasferire file.

Se l'approccio che ho suggerito è un po 'complicato, considera almeno quanto segue: crea una directory almeno per utente e archivia la sua immagine. Se le immagini non sono pubbliche, non mappare http://.../image/<user>/<image> così facilmente. Mappalo su un codice in cui puoi eseguire un controllo corretto (l'utente è == currentUser?, L'utente è nella lista degli amici del proprietario dell'immagine?, ...)

    
risposta data 12.08.2016 - 11:00
fonte

Leggi altre domande sui tag