2012-03-29 9 views
6

Ho un modulo multipart che dovrebbe caricare un file e alcuni parametri. Ecco come si presenta:Accesso alle parti di una richiesta di postazione multipart/form-data in un servizio 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> 

Il servizio web si presenta come segue:

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

Quando l'invio del modulo, il valore per "someparameter" è sempre segnalato come nulla pur apparendo come ho inserito un valore .

Le mie domande sono:

  1. Cosa c'è di sbagliato con il codice di cui sopra?
  2. Come accedere al file che viene trasmesso con il modulo?

Sto utilizzando Jersey 1.10.

risposta

14

Ok, dopo aver cercato su Google alcune ore ho trovato l'errore nel mio codice.

È necessario utilizzare l'annotazione @FormDataParam anziché @FormParam.

Il codice risultante è simile al seguente:

@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

è possibile contrassegnare questo come accettato – arg20

+0

"Si può accettare la propria risposta domani", dice. ;) –

+1

Non riesco a trovare il formdataparam nella maglia 1.17. Qualche soluzione per questo? –

Problemi correlati