2015-02-07 7 views
10

में छवियों/फ़ाइलों को कहां/कैसे स्टोर करें मैं स्प्रिंग एमवीसी और हाइबरनेट में एक ई-वाणिज्यिक अनुप्रयोग में काम कर रहा हूं, जहां मुझे कई छवियों को स्टोर करने की आवश्यकता है।
मैं छवियों को फ़ाइल सिस्टम पर सहेजना चाहता हूं (डेटाबेस पर लोड को कम करने के लिए सर्वर पर)। मेरा संदेह यह है कि मुझे अपनी परियोजना में छवियों को वास्तव में सहेजना चाहिए?वसंत एमवीसी

मैं कुछ ब्लॉगों जहां यह उल्लेख किया गया था कि छवियों war फ़ाइल में साथ फ़ोल्डर में सहेजा नहीं किया जाना चाहिए जब अनुप्रयोग के अगले संस्करण (बैकअप के लिए सभी छवियों को जारी किया गया और फिर से जगह के रूप में यह समस्याएं पैदा कर सकता के माध्यम से किया गया है के रूप में उन्हें मैन्युअल रूप से)
कृपया मुझे बताएं कि मुझे छवियों को सहेजने और हमारे जावा क्लास में उस फ़ोल्डर पथ को कैसे प्राप्त करना है।

उत्तर

6

आप एक नियंत्रक कि छवि डेटा लौट सकते हैं और इसका इस्तेमाल अपने jsp पर प्रदर्शित करने के लिए बना सकते हैं।

उदाहरण नियंत्रक:

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

और प्रदर्शित करने के लिए नीचे दिए गए कोड का उपयोग करें:

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

HTH!

+0

rpath दो बार घोषित – Shahzeb

+0

ओपी ने छवियों को संग्रहीत करने के बारे में पूछा, एक जवाब स्वीकार किया जो कहता है कि छवियों को कैसे पुनर्प्राप्त करें। ताकतवर उच्च! –

1

आप कंटेनर में फ़ाइलों को स्टोर/अपलोड कर सकते हैं। पथ तक पहुंचने के लिए request.getRealPath("/") का उपयोग करें।

उदाहरण:

   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

धन्यवाद कार्तिक, मैंने उपर्युक्त कोड की कोशिश की है जो इसे रूट की निर्देशिका में सहेज रहा है, क्या आप कृपया मुझे सुझाव दे सकते हैं कि छवि को जेएसपी कैसे प्रदर्शित किया जाए, मैं वसंत एमवीसी फ्रेमवर्क का उपयोग कर रहा हूं, मैंने छवि का पूरा पथ देने की कोशिश की लेकिन यह असफल रहा, कृपया मुझे इस में सुझाव दें, अग्रिम धन्यवाद। –

संबंधित मुद्दे