2012-03-29 5 views
6

Tengo un formulario multiparte que se supone que carga un archivo, así como algunos parámetros. Se ve así:Acceso a partes de una solicitud de publicación multipart/form-data en un servicio 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> 

El servicio web es el siguiente:

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

Al enviar el formulario, el valor de "someparameter" siempre se reporta como nulo si bien en la forma que entré en un valor .

Mis preguntas son:

  1. Lo que está mal con el código anterior?
  2. ¿Cómo accedería al archivo que se transmite con el formulario?

Estoy usando Jersey 1.10.

Respuesta

14

Ok, después de googlear bastantes horas encontré el error en mi código.

Debe utilizar la anotación @FormDataParam en lugar de @FormParam.

El código resultante es el siguiente:

@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

puede marcarlo como aceptado – arg20

+0

"Se puede aceptar su propia respuesta mañana", dice. ;) –

+1

No encuentro formdataparam en jersey 1.17. ¿Alguna solución para esto? –

Cuestiones relacionadas