2015-02-07 18 views
10

Sto lavorando a un'applicazione e-commerciale in Spring MVC e Hibernate, dove ho bisogno di memorizzare un numero di immagini.
Desidero salvare le immagini su un file system (sul server stesso per ridurre il carico sul database). Il mio dubbio è dove esattamente dovrei salvare le immagini nel mio progetto?Dove/Come memorizzare immagini/file in mvc di primavera

Come ho vissuto alcuni blog in cui è stato detto che le immagini non devono essere salvati nella cartella con in war file come si può portare a problemi quando viene rilasciata la prossima versione della app (per il backup di tutte le immagini e di nuovo posto manualmente)
Per favore fatemi sapere dove esattamente ho bisogno di salvare le immagini e come ottenere quel percorso di cartella nella nostra classe java.

risposta

6

È possibile creare un controller che restituirà i dati di immagine e utilizzarlo per visualizzare sul tuo jsp. Controller

Esempio:

@RequestMapping(value = "/getImage/{imageId}") 
@ResponseBody 
public byte[] getImage(@PathVariable long imageId, HttpServletRequest request) { 
String rpath=request.getRealPath("/"); 
rpath=rpath+"/"+imageId; // whatever path you used for storing the file 
Path path = Paths.get(rpath); 
byte[] data = Files.readAllBytes(path); 
return data; 
} 

e utilizzare il codice qui sotto per la visualizzazione:

<img src="/yourAppName/getImage/560705990000.png" alt="myImage"/> 

HTH!

+0

percorso dichiarato due volte – Shahzeb

+0

L'OP ha chiesto informazioni sulla memorizzazione delle immagini, ha accettato una risposta che dice come recuperare le immagini. Possente! –

1

È possibile memorizzare/caricare i file nel contenitore. Utilizzare request.getRealPath("/") per accedere al percorso.

Esempio:

   byte[] bytes = fileInput.getBytes(); 

       //bytes to string conversion 
       fileToStr = new String(bytes, "UTF-8"); 
       System.out.println(fileToStr);      
       String name=fileInput.getOriginalFilename(); 

       String ext=name.substring(name.lastIndexOf("."),name.length()); 
       fileName=""+System.currentTimeMillis()+ext; 


       String rpath=request.getRealPath("/"); //path forstoring the file 
       System.out.println(rpath); 
       File file=new File(rpath,"csv"); 
       if(!file.exists()){ 
           file.mkdirs(); 
       } 

       File temp=new File(file,fileName); 
       System.out.println("Path : "+temp); 

       FileOutputStream fos= new FileOutputStream(temp); 
       fos.write(bytes); 
       fos.close(); 
+0

Grazie karthik, ho provato il codice precedente che sta salvando nella directory principale dell'applicazione, per favore mi suggerisca come visualizzare quell'immagine è jsp, sto usando il framework mvc di primavera, ho provato a dare il percorso completo dell'immagine ma ha fallito, per favore suggeriscimi in questo, grazie in anticipo. –

Problemi correlati