2015-02-07 14 views
10

Ich arbeite in einer e-kommerziellen Anwendung in Spring MVC und Hibernate, wo ich eine Reihe von Bildern speichern muss.
Ich möchte die Bilder in einem Dateisystem speichern (auf dem Server selbst, um die Belastung der Datenbank zu reduzieren). Mein Zweifel ist, wo genau ich Bilder in meinem Projekt speichern sollte?Wo/Wie man Bilder/Dateien im Frühjahr speichert mvc

Wie ich durch einige Blogs erfahren habe, wo es erwähnt wurde, dass Bilder nicht im Ordner mit war Datei gespeichert werden sollten, da es zu Problemen führen kann, wenn die nächste Version der App freigegeben wird (alle Bilder sichern und erneut platzieren sie manuell)
Bitte lassen Sie mich wissen, wo genau ich Bilder speichern muss und wie dieser Ordner Pfad in unserer Java-Klasse zu bekommen.

Antwort

6

Sie einen Controller erstellen können, die die Bilddaten werden zurückkehren und verwenden Sie es auf Ihrem jsp anzuzeigen.

Beispiel Controller:

@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; 
} 

Und den Code unten verwenden für die Anzeige:

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

HTH!

+0

rpath deklariert zweimal – Shahzeb

+0

OP fragte nach dem Speichern von Bildern, akzeptierte eine Antwort, die besagt, wie Bilder abgerufen werden. Mächtig hoch! –

1

Sie können die Dateien im Container speichern/hochladen. Verwenden Sie request.getRealPath("/") für den Zugriff auf den Pfad.

Beispiel:

   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

Danke carthik, ich habe versucht, den oben genannten Code es im Stammverzeichnis der Anwendung speichern können Sie bitte vorschlagen, wie dieses Bild anzuzeigen ist jsp, ich benutze Federmvc Rahmen, versuchte ich den vollen Pfad des Bildes geben aber es hat versagt, Bitte schlagen Sie mir vor, Danke im Voraus. –