2014-10-17 8 views
7

पर तैनात किए जाने पर पीपीटीएक्स को निर्यात की गई रिपोर्ट डाउनलोड करने की समस्या जारी करना हम जेस्पर रीपॉर्ट्स 5.6.1 का उपयोग करके हमारी रिपोर्ट तैयार कर रहे हैं, और उसी टेम्पलेट को पीडीएफ या पावरपॉइंट पर निर्यात करने की अनुमति देते हैं। स्थानीय रूप से चलते समय, पीडीएफ और पीपीटीएक्स फ़ाइल डाउनलोड पूरी तरह से काम करते हैं। जब हम अपने सर्वर पर तैनात करते हैं तो पीडीएफ ठीक काम करता है, लेकिन पीपीटीएक्स फाइलें खोली नहीं जा सकती हैं। जब हम स्थानीय रूप से चलाते हैं, तो इसे टोमकैट पर तैनात किया जाता है, लेकिन जब सर्वर पर तैनात किया जाता है तो यह वेबस्पेयर पर चल रहा है।सर्वर

बातें मैंने कोशिश की और पाया है:

  • मैं लॉग जाँच कर ली है, और वहाँ कोई अपवाद नहीं है या कुछ भी किसी भी भौहें बढ़ाने के लिए कर रहे हैं।
  • डाउनलोड की गई फ़ाइल आमतौर पर उस समय से थोड़ी बड़ी होती है जब हम स्थानीय रूप से चलते हैं।
  • यदि मैंने फ़ाइलों का विस्तार ज़िप में बदल दिया है, और उन्हें अनारक्षित किया है। फ़ाइलों की संरचना और फ़ाइल नाम समान हैं, फ़ाइलों के साथ वास्तव में एक ही फ़ाइल आकार के साथ। सामग्री प्रत्येक स्लाइड में पाए गए ऑब्जेक्ट्स के नामों में केवल अलग दिखाई देती है।
  • सोच रहा है कि यह x प्रकार की फ़ाइलों के साथ समस्या हो सकती है, मैंने xlsx को निर्यात करने का प्रयास किया, यह देखने के लिए कि क्या होगा, और यह एक ही टेम्पलेट के साथ ठीक काम करता है।
  • मैंने एक स्थिर पीपीटीएक्स फ़ाइल जो अच्छी तरह से जानी थी, और इसे सर्वर से बिना किसी समस्या के डाउनलोड कर सकते हैं। मैंने इस मुद्दे से सर्वर कॉन्फ़िगरेशन को खत्म करने का प्रयास करने के लिए ऐसा किया, और यह समझ में आया कि यह काम करता है, मुझे लगता है कि यह मेरे कोड के साथ कुछ है, बस यह सुनिश्चित नहीं है कि क्या।

यहां हम प्रतिक्रिया लिखने के लिए कोड है:

if ("xlsx".equals(type)) { 
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
    response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".xlsx"); 
} else if ("pptx".equals(type)) { 
    response.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation"); 
    response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".pptx"); 
    response.setCharacterEncoding("UTF-8"); 
} else { 
    response.setContentType("application/pdf"); 
    response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".pdf"); 
} 
try (final ByteArrayOutputStream reportResult = reportsService.generateReport(
     getDeal(userId, dealId, sessionStore), 
     getScenarioModel(userId, dealId, scenarioId, sessionStore), reportId, type)) { 
    configureResponse(response, type, reportResult, dealId + "-" + scenarioId); 
    // Write to http response 
    reportResult.writeTo(response.getOutputStream()); 
} 

response.flushBuffer(); 

मैं समस्या निवारण चरणों पर विचार समाप्त हो गया है, और यह स्थानीय स्तर पर पुन: पेश करने में सक्षम होने के बिना, मैं इसे का निदान करने के लिए मुश्किल लग रहा है ।

+0

क्या किसी को भी इस समस्या का समाधान मिला? हम एक ही मुद्दे से संघर्ष कर रहे हैं। क्या कोई इसमे मेरी मदद कर सकता है? –

+0

कक्षापथ सेटिंग्स? जावा स्थानीय और सर्वर-पक्ष का वही संस्करण? वही जैस्पर रीपॉर्ट्स लाइब्रेरी संस्करण? सभी आश्रित पुस्तकालय स्थापित? वही संस्करण? निर्णय पेड़ का परीक्षण करने के लिए लॉगिंग? (इसके अलावा, भविष्य के रखरखाव के प्यार के लिए, कृपया डुप्लिकेट कोड को खत्म करें ...) –

उत्तर

3

यह अंधेरे में एक शॉट का थोड़ा सा है, लेकिन क्या आप सुनिश्चित हैं कि माइम प्रकार आपके वेबस्पियर उदाहरणों में सही तरीके से कॉन्फ़िगर किया गया है? (मुझे एहसास है कि प्रतिक्रिया में सामग्री प्रकार को सेट करना उस एमआईएम प्रकार के लिए वेब सर्वर को कॉन्फ़िगर करने की आवश्यकता को कम करना चाहिए, लेकिन यह वेबस्फेयर सभी के बाद कॉन्फ़िगर किया जाना चाहिए ;-))

मैं यह शर्त लगाने के लिए तैयार हूं कि पीडीएफ एक है कॉन्फ़िगर किया गया एमआईएम प्रकार लेकिन पीपीटीएक्स नहीं है। क्या आप जांच सकते हैं?

  1. आभासी मेजबान के लिए गया था लॉग इन करने के लिए, व्यवस्थापन कंसोल
  2. जाओ
  3. लिंक MIME प्रकार

(here's a more detailed technote)

IIRC है, जो बिलाव के विपरीत (की कमी के लिए कहा जाता है के लिए क्लिक करें एक बेहतर शब्द) एक "बंडल" ऑल-इन-वन http स्टैक और सर्वलेट कंटेनर की तरह, वेबस्पेयर में एक अलग http स्टैक है (प्रत्येक ऐप के लिए एक अलग जेवीएम के साथ), इसलिए यह आश्चर्य की बात नहीं है कि कॉन्फ़िगर अवधि की आवश्यकता हो सकती है जो सरल कंटेनरों के लिए नहीं होगी।

+0

हाँ, मैं सहमत हूं, आपको ऐसा करना चाहिए और यदि यह गुम है तो आपको अपना एमआईएमई प्रकार ('एप्लिकेशन/vnd) जोड़ना चाहिए।openxmlformats- officedocument.presentationml.presentation') वहां – borowis