इसे अपनी सी ड्राइव पर लिखने के बजाय मैं इसे सर्वर पर चलाने जा रहा हूं, लेकिन बाद में पुनर्प्राप्त करने और xhtml फ़ाइल में प्रदर्शित करने के लिए मुझे छवि को कहां संग्रहीत करना चाहिए?
यह इस बात पर निर्भर करता है कि सर्वर को कॉन्फ़िगर करने पर आपका कितना नियंत्रण है। आदर्श टॉमकैट वेबएप फ़ोल्डर के बाहर एक निश्चित पथ को कॉन्फ़िगर करना होगा। उदाहरण के लिए, /var/webapp/upload
. आप इस पथ को VM तर्क या पर्यावरण चर के रूप में सेट कर सकते हैं ताकि आपका वेबएप कोड को बदलने की आवश्यकता के बिना इसे प्रोग्रामेटिक रूप से पुनर्प्राप्त कर सके।
उदाहरण के लिए, VM तर्क के रूप में निर्दिष्ट करते समय -Dupload.location=/var/webapp/upload
, आप अपलोड को इस प्रकार पूरा कर सकते हैं:
Path folder = Paths.get(System.getProperty("upload.location"));
String filename = FilenameUtils.getBaseName(uploadedFile.getName());
String extension = FilenameUtils.getExtension(uploadedFile.getName());
Path file = Files.createTempFile(folder, filename + "-", "." + extension);
try (InputStream input = uploadedFile.getInputStream()) {
Files.copy(input, file, StandardCopyOption.REPLACE_EXISTING);
}
String uploadedFileName = file.getFileName().toString();
// Now store it in DB.
जहाँ तक फ़ाइल को वापस प्रस्तुत करने की बात है, सबसे आदर्श यह होगा कि अपलोड स्थान को एक अलग <Context>
. के रूप में जोड़ा जाए टॉमकैट को। उदा.
<Context docBase="/var/webapp/upload" path="/uploads" />
इस तरह आप इसे सीधे http://example.com/uploads/foo-123456 द्वारा एक्सेस कर सकते हैं .ext
यदि आपके पास सर्वर को कॉन्फ़िगर करने पर शून्य नियंत्रण है, तो, ठीक है, डीबी में संग्रहीत करना या किसी तृतीय पक्ष होस्ट जैसे अमेज़ॅन एस 3 को भेजना आपकी सबसे अच्छी शर्त है।
यह भी देखें:
- किसी भी फाइल को अपलोड करने के लिए फाइल क्लास में सापेक्ष पथ कैसे प्रदान करें?
- विश्वसनीय डेटा सर्विंग