Originariamente inviata da
andbin
Dovrei andare a leggere la documentazione di Thymeleaf, per sicurezza.
Comunque un approccio molto migliore è questo. Quando invii il form con i dati per generare la immagine, generi dinamicamente la nuova pagina ma NON la immagine. Nella pagina avrai solo un nuovo url composto del tipo:
codice:
<img src="/blabla/immagine.png?parametro1=xxxxx&.........&v=1673511873670">
Metti tutti i parametri in
query string che ti possono servire per generare la immagine. Più un parametro di "versione" per il
cache busting che potrebbe essere un incrementale ma anche più banalmente un
timestamp (nell'esempio i millisecondi dalla epoch).
Quel /blabla/immagine.png NON è e non deve essere un file fisico presente nella webapp (non è una buona cosa infatti). Questo url è da gestire con un controller, cioè ci sarà un metodo di controller che risponde su GET /blabla/immagine.png. All'interno di questa request generi la immagine come ti pare. Puoi anche sfruttare eventualmente file "temporanei" se necessario (non c'è nulla di vietato in questo senso, purché univoci, c'è il modo per farlo) e poi, attenzione, fai lo
streaming dei byte della immagine nella response.
Questo ti risolve TUTTI i problemi, pure l'utilizzo "concorrente" o da parte di più utenti.
Appena riesco nei prossimi giorni scrivo un demo di generazione immagini con Spring Boot 3.