दिलचस्प पोस्ट
XPath परीक्षण अगर नोड मान संख्या है लिनक्स में डेमॉन बनाना जावा के साथ पीडीएफ़ बनाएँ कैसे पोस्टग्रेएसयूएलएल UNIQUE बाधा / इसे किस प्रकार का सूचकांक उपयोग करता है? कैसे पता चलेगा कि दो सरणियों के समान मूल्य हैं वेबपैक के साथ निर्देशिका बनाने के लिए स्थैतिक फ़ाइलों की प्रतिलिपि कैसे करें? Android WebView में जावास्क्रिप्ट के माध्यम से एचटीएमएल बटन पर क्लिक करें आप WideCharToMultiByte का उचित उपयोग कैसे करते हैं अतिरिक्त अनुरोध भेजने वाले क्रोम के साथ क्या करना है? क्या आप HTML5 विशेषताओं का उद्धरण करते हैं? Tensorflow में केवल पायथन के साथ एक कस्टम सक्रियण फ़ंक्शन कैसे बना सकता है? एंड्रॉइड अलार्म मैनेजर के जरिये कई अलार्म सेट करने के तरीके Egg_info त्रुटि के कारण पीआईपी के माध्यम से स्थापित नहीं किया जा सकता क्या विंडोज पर एक परमाणु फाइल का नाम बदलना (ओवरराइट के साथ) संभव है? HTML वर्ण कोड 8203 क्या है?

java.io.FileNotFoundException जब अपलोड किए गए फ़ाइल को डिस्क पर getRealPath () के माध्यम से लिखते समय

ग्लासफ़िश जिस रास्ते से मैं अपनी छवि फ़ाइल को भी सहेजना चाहती है, उससे अतिरिक्त जोड़ते हुए लगता है, वहाँ केवल एक पूर्ण पथ का उपयोग करने का कोई तरीका है, मेरे सर्वोलेट को मिलता है

String appPath = request.getServletContext().getRealPath(""); ?

मैंने दिन बिताए हैं एक छवि फ़ाइल अपलोड करने के लिए विभिन्न तरीकों की कोशिश कर रहे हैं और एक सर्विसलेट को डिस्क पर सहेजते हैं।

मैंने इस उदाहरण का प्रयोग किया: http://www.codejava.net/java-ee/servlet/how-to-write-upload-file-servlet-with-servlet-30-api

डिबग का उपयोग मैं देख सकता हूं कि फाइल का नाम और पथ जानकारी सही तरीके से एकत्र की जाती है लेकिन कोड `part.write (savepath + File.Sseparator + fileName) पर विफल रहता है;` `

और ग्लासफ़िश की अपवाद रिपोर्ट है:

 exception java.io.FileNotFoundException: C:\Program Files\glassfish-3.1.2.2\glassfish\domains\domain1\generated\jsp\com.onemore_onemore-web_war_1.0-SNAPSHOT\D:\Dropbox\Git\Brian_JEE\onemore\onemore\onemore-web\target\onemore-web-1.0-SNAPSHOT\image\screengrab_all_products.jpg (The filename, directory name, or volume label syntax is incorrect) 

मैं इस अपवाद D:\Dropbox\Git\Brian_JEE\onemore\onemore\onemore-web\target\onemore-web-1.0-SNAPSHOT\image\screengrab_all_products.jpg हिस्से के रूप में सही पथ देख सकता हूं D:\Dropbox\Git\Brian_JEE\onemore\onemore\onemore-web\target\onemore-web-1.0-SNAPSHOT\image\screengrab_all_products.jpg

JSP

 <form action="${pageContext.request.contextPath}/imageupload" method="post" enctype="multipart/form-data" name="productForm" id="productForm"> <input type="file" name="file" id="file"> <input type="submit" name="Submit" value="Submit"></td> </form> 

सर्वलेट

 @WebServlet(name = "UploadImageServlet", urlPatterns = {"/imageupload"}) @MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2, // 2MB maxFileSize = 1024 * 1024 * 10, // 10MB maxRequestSize = 1024 * 1024 * 50) // 50MB public class UploadImageServlet extends HttpServlet { /** * Name of the directory where uploaded files will be saved, relative to the * web application directory. */ private static final String SAVE_DIR = "image"; /** * handles file upload */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // gets absolute path of the web application String appPath = request.getServletContext().getRealPath(""); // constructs path of the directory to save uploaded file String savePath = appPath + File.separator + SAVE_DIR; // creates the save directory if it does not exists File fileSaveDir = new File(savePath); if (!fileSaveDir.exists()) { fileSaveDir.mkdir(); } for (Part part : request.getParts()) { String fileName = extractFileName(part); part.write(savePath + File.separator + fileName); } request.setAttribute("message", "Upload has been done successfully!"); getServletContext().getRequestDispatcher("/WEB-INF/jsp/newproduct.jsp").forward( request, response); } /** * Extracts file name from HTTP header content-disposition */ private String extractFileName(Part part) { String contentDisp = part.getHeader("content-disposition"); String[] items = contentDisp.split(";"); for (String s : items) { if (s.trim().startsWith("filename")) { return s.substring(s.indexOf("=") + 2, s.length() - 1); } } return ""; } } 

वेब के समाधान से एकत्रित समाधान "java.io.FileNotFoundException जब अपलोड किए गए फ़ाइल को डिस्क पर getRealPath () के माध्यम से लिखते समय"

कभी भी getRealPath () का उपयोग न करें

आपको अपरिवर्तित फ़ोल्डर में अपलोड की गई फ़ाइलों को सहेजना नहीं चाहिए। मैंने यह कई बार समझाया है इनमें से एक स्पष्टीकरण इस उत्तर में प्राप्त किया जा सकता है: अपलोड की गई छवि केवल पृष्ठ को रीफ्रेश करने के बाद ही उपलब्ध है ।

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

अपलोड किए गए फ़ाइलों को फ़िक्स फ़ोल्डर के बाहर एक निश्चित पथ में सहेजें। यह भी देखें मैं कॉमन्स फाइल अपलोड का उपयोग कर फाइल अपलोड करने के लिए फ़ोल्डर कैसे सेट करूं ?