2012-03-29 15 views
6

Tôi có biểu mẫu nhiều phần được cho là tải lên tệp cũng như một số tham số. Nó trông giống như thế này:Truy cập các phần của yêu cầu đăng đa dữ liệu/biểu mẫu dữ liệu trong dịch vụ web Java REST

<form id="upload" action="http://localhost:9998/test" method="post" enctype="multipart/form-data"> 
    <input name="inputfile" type="file" size="50" accept="application/octet-stream"> 
    <input name="someparameter" type="text" size="10"> 
    <input type="submit" value="Go!"> 
</form> 

Các dịch vụ web trông như thế này:

@Path("/test") 
public class ServiceInterface { 
    @POST 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public void execute(@FormParam(value="someparameter") String param) { 
     System.out.println(param); 
    } 
} 

Khi submit form, giá trị cho "someparameter" luôn được báo cáo là rỗng mặc dù theo hình thức tôi bước vào một giá trị .

Câu hỏi của tôi là:

  1. Điều gì là sai với mã trên?
  2. Tôi làm cách nào để truy cập tệp được truyền với biểu mẫu?

Tôi đang sử dụng Jersey 1.10.

Trả lời

14

Ok, sau khi googling khá một vài giờ tôi đã tìm thấy lỗi trong mã của mình.

Bạn phải sử dụng chú thích @FormDataParam thay vì @FormParam.

Mã kết quả trông như thế này:

@Path("/test") 
public class ServiceInterface { 
    @POST 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public void execute(
        @FormDataParam("someparameter") String param 
        @FormDataParam("inputfile") File inputfile 
         ) 
    { 
     System.out.println(param); 
    } 
} 
+0

bạn có thể đánh dấu đây là chấp nhận – arg20

+0

"Bạn có thể chấp nhận câu trả lời của riêng bạn vào ngày mai" nó nói. ;) –

+1

Tôi không thể tìm thấy formdataparam trong áo 1.17. Bất kỳ cách giải quyết nào cho vấn đề này? –

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