jsf ऐप सर्वर पर सीमित समय के लिए पीडीएफ स्टोर करें और इसे डाउनलोड के लिए उपलब्ध कराएं




राइजिंग स्टार लाइव वोटिंग (2)

आपका प्रश्न अस्पष्ट है, लेकिन अगर मेरी समझ अच्छी है:

सबसे पहले अगर आप सीमित समय के लिए पीडीएफ स्टोर करना चाहते हैं तो आप एक नौकरी बना सकते हैं जो आपको हर दिन या सप्ताह में पीडीएफ़ को साफ करता है या आपको जो भी ज़रूरत है।

डाउनलोड पक्ष के लिए, आप <p:fileDownload> ( http://www.primefaces.org/showcase/ui/file/download.xhtml ) एप्लिकेशन सर्वर से कोई फ़ाइल डाउनलोड करने के लिए उपयोग कर सकते हैं।

हे वहाँ, मैं प्राइमफेस 5 / जेएसएफ 2 और टॉमकैट का उपयोग कर रहा हूं!

कोई मुझे दिखा सकता है या मुझे एक ऐप सर्वर पर एक सीमित समय के लिए पीडीएफ स्टोर करने के बारे में पता लगा सकता है (मैं टोमकैट का उपयोग कर रहा हूं) और फिर इसे डाउनलोड कर रहा हूं (यदि उपयोगकर्ता अनुरोध करता है तो)। यह कार्यक्षमता चालान से संबंधित है इसलिए मैं डेटाइन्फ़ोर्टर का उपयोग नहीं कर सकता

अधिक विशिष्ट होने के लिए, मैंने इसे बहुत ज्यादा लागू किया है लेकिन मुझे इसके बारे में इतना यकीन नहीं है। एक बड़ा सवाल यह है कि ... मैं अपनी जेनरेट की गई फ़ाइलों को कहाँ से संग्रहीत करता हूं? मैंने चारों ओर ब्राउज किया है और लोगों ने कहा है कि वेब ऐप या टॉमकेट डायरेक्टरी में फाइल को सहेजना ठीक नहीं है। क्या अन्य solutiuon मैं क्या है?


Answer #1

File#createTempFile() सुविधा का उपयोग करें Servletcontainer- प्रबंधित अस्थायी फ़ोल्डर के रूप में अनुप्रयोग scoped विशेषता के रूप में ServletContext.TEMPDIR कुंजी के रूप में उपलब्ध है।

String tempDir = (String) externalContext.getApplicationMap().get(ServletContext.TEMPDIR);
File tempPdfFile = File.createTempFile("generated-", ".pdf", tempDir);
// Write to it.

फिर बस स्वयं की तैनाती वाली फाइल नाम को इसके दायरे में रखने के लिए जिम्मेदार है। उदाहरण के लिए

String tempPdfFileName = tempPdfFile.getName();
// ...

अंत में, एक बार सेवा देने के लिए जिम्मेदार व्यक्ति को फ़ाइल नाम से पैरामीटर के रूप में जाना जाता है, उदाहरण के लिए एक साधारण सर्वलेट , फिर इसे केवल निम्न प्रकार से करें:

String tempDir = (String) getServletContext().getAttribute(ServletContext.TEMPDIR);
File tempPdfFile = new File(tempDir, tempPdfFileName);
response.setHeader("Content-Type", "application/pdf");
response.setHeader("Content-Length", String.valueOf(tempPdfFile.length()));
response.setHeader("Content-Disposition", "inline; filename=\"generated.pdf\"");
Files.copy(tempPdfFile.toPath(), response.getOutputStream());

यह भी देखें:







download