2012-12-14 12 views
12

मुझे जर्सी वेब सेवाओं का उपयोग करके पीडीएफ फ़ाइल डाउनलोड करने की आवश्यकता है, मैं पहले से ही निम्नलिखित करता हूं लेकिन प्राप्त फ़ाइल आकार हमेशा 0 (शून्य) होता है।जर्सी का उपयोग कर पीडीएफ फाइल कैसे डाउनलोड करें?

@Produces({"application/pdf"}) 
@GET 
@Path("/pdfsample") 
public Response getPDF() { 

    File f = new File("D:/Reports/Output/Testing.pdf"); 
    return Response.ok(f, "application/pdf").build(); 

} 

कृपया सही तरीके से करने में मदद करें, धन्यवाद !!

उत्तर

4

आप इकाई के रूप में केवल File नहीं दे सकते हैं, यह ऐसा काम नहीं करता है।

आपको फ़ाइल को स्वयं पढ़ना होगा और डेटा (byte[] के रूप में) इकाई के रूप में देना होगा।

संपादित करें:
आप आउटपुट स्ट्रीमिंग भी देखना चाहते हैं। इसमें दो फायदे हैं; 1) यह आपको पूरी फाइल को पढ़ने के मेमोरी ओवरहेड के बिना सेवा फ़ाइलों का उपयोग करने की अनुमति देता है और 2) यह पूरी फ़ाइल को पहले पढ़ने के बिना सीधे क्लाइंट को डेटा भेजना शुरू कर देता है। स्ट्रीमिंग के उदाहरण के लिए https://stackoverflow.com/a/3503704/443515 देखें।

0

भविष्य आगंतुकों के लिए,

यह होगा पारित कर दिया आईडी पर स्थित ब्लॉब खोजने के लिए और ब्राउज़र में एक पीडीएफ दस्तावेज़ के रूप में यह वापसी (यह मानते हुए कि यह एक पीडीएफ डेटाबेस में संग्रहीत है):

@Path("Download/{id}") 
@GET 
@Produces("application/pdf") 
public Response getPDF(@PathParam("id") Long id) throws Exception { 
    Entity entity = em.find(ClientCase.class, id); 
    return Response 
      .ok() 
      .type("application/pdf") 
      .entity(entity.getDocument()) 
      .build(); 
} 
संबंधित मुद्दे