Come salvare le immagini in file in un'applicazione web ed evitare di rimuoverli con ogni build?

4

Sto costruendo un'applicazione web e gli utenti saranno in grado di caricare le foto. E voglio memorizzare queste immagini in file invece di memorizzarli nel DB.

Ma se ho salvato queste foto in percorsi relativi all'applicazione web, saranno rimosse con ogni build.

Quindi, come posso gestire questo e le migliori pratiche relative a questo problema.

    
posta Mohamed Ramadan 03.10.2011 - 10:43
fonte

4 risposte

4

Bene, è necessario memorizzare un riferimento ad essi all'interno di un database, quindi memorizzare le immagini esterne all'applicazione web. Potrebbe trovarsi sullo stesso server in una cartella accessibile al di fuori dell'ambito o su un server dedicato per ospitare le immagini.

    
risposta data 03.10.2011 - 11:12
fonte
2

Per semplicità di design e codice, a volte ha senso archiviare i file come dati binari in una colonna del database, tuttavia RDBMS non è efficiente per questo e non lo consiglierei se le prestazioni sono un problema primario.

Se decidi di archiviare su file system, i percorsi assoluti sono molto meglio dei percorsi relativi in quanto hai persistenza. Definisci un percorso assoluto per una cartella in cui archiviare i file e assicurati che venga eseguito regolarmente il backup.

Un'altra nota di consiglio, quando si tratta di hosting, è meglio non memorizzare i file sul server web stesso. La maggior parte delle macchine server Web sono configurate per fare una cosa e una cosa, ricevere e servire le comunicazioni di rete. Rispetto a una sofisticata archiviazione di file, backup o altro sistema di array RAID, l'archiviazione su disco sulla maggior parte dei server Web è sottoposta a un basso livello di sottomissione per grandi quantità di I / O di file. I server Web non sono destinati a questo scopo.

Raccomando un percorso assoluto per una condivisione di rete a un file server dedicato o altro sistema destinato a grandi quantità di I / O di file, nonché backup e ridondanza.

    
risposta data 03.10.2011 - 14:09
fonte
1

Un buon modo per affrontare questo tipo di problema è avere un altro dominio / sottodominio / (o anche un servizio CDN) dedicato al servizio di file statici (immagini, script, fogli di stile, documenti, ecc.)

Quindi, ad esempio, nelle semplici applicazioni web: Percorso dell'applicazione: / www / app /, percorso dei file statici: / www / static /

quando l'utente carica un file, salvandolo su /www/static/complex/folder/structure/file.ext, quindi salva i dettagli su questo file caricato nel database. e poi servendo il file tramite static.my-amazing-web.app

Ciò che ti consentirà di fare è: sfruttare facilmente la cache del browser degli utenti, fare ottimizzazioni al volo, scalare con le CDN quando le cose iniziano a sfuggire di mano e tutti i tipi di cose divertenti.

Ciò consentirà anche di implementare più sicurezza per i file caricati dagli utenti. È inoltre consigliabile avere un file server statico con l'esecuzione dei file bloccati, per migliorare la sicurezza del server dai caricamenti di utenti malintenzionati.

    
risposta data 08.05.2015 - 07:16
fonte
0

Effettua entrambe le operazioni: memorizzale inizialmente in un database. Memorizzali sul disco quando richiesto. Ottieni il meglio da entrambi i mondi: facile backup trasportabile con distribuzione scalabile.

    
risposta data 03.10.2011 - 20:07
fonte

Leggi altre domande sui tag