2011-07-27 23 views
6

Tôi đang cố gắng để có một dịch vụ REST trả về một tệp nén từ đĩa cứng cục bộ. Sau đây là những gì tôi đang làm,Cách chỉ định tên tệp để lưu vào trình duyệt từ dịch vụ REST ở Jersey?

@Path("/interface3/{Ent_id}/{esf_app_id}/{esf_app_ver}") 
public class Interface3Mock { 

    // This method is called if TEXT_PLAIN is request 
    @GET 
    @Produces("application/zip") 
    public Response callInterface3_text(
      @PathParam("Ent_id") Integer entitlement_id, 
      @PathParam("eapp_id") String eapp_id, 
      @PathParam("eapp_ver") String eapp_ver) { 
     File f = new File("D:\\Documentation\\Documentation.zip"); 

     String mt = new MimetypesFileTypeMap().getContentType(f); 

     return Response.ok(f, mt).build(); 

    } 
} 

Bây giờ khi tôi sử dụng trình duyệt tức là. Internet Explorer và chìa khóa trong url http://localhost:9788/mockRESTServer/rest/interface3/123456/k123/l345 tôi thấy một hộp thoại tải về tập tin mà nói "Bạn có muốn lưu các tập tin l345`.

tôi muốn nó hỏi tôi cho ví dụ zip tải về. D:\\Documentation\\Documentation.zip. Nhưng bằng cách nào đó nó chiếm các tham số cuối cùng trong URL yêu cầu.

Trả lời

9
return Response.ok(f, mt) 
     .header("Content-Disposition", "attachment; filename=Documentation.zip") 
     .build(); 

Xem How to set response header in JAX-RS so that user sees download popup for Excel?

+0

Hey! Cảm ơn rất nhiều. Nó hoạt động tuyệt vời !!! –

+0

bạn có thể vui lòng giải thích tại sao điều này đã xảy ra sai? Điều đó sẽ giúp tôi một rất nhiều trong việc học những thứ này. :) –

+1

IE sử dụng URL để xác định tên tệp mặc định để nhắc người dùng lưu tài liệu dưới dạng * if * tiêu đề này không hiện diện –

Các vấn đề liên quan