Come implementare dati di moduli complessi?

1

Dovrei implementare una forma relativamente complessa che segue, ma ha almeno altre quattro pagine che richiedono all'utente di inserire tutte le informazioni necessarie per le tracce:

link

Questi dati dovranno essere inviati al server, che viene implementato usando Dropwizard. Sto cercando le migliori pratiche su come caricare e inviare una forma così complessa con potenzialmente dozzine di canzoni al server.

La soluzione più semplice che ho visto è una semplice richiesta multipart / form-data con il seguente schema di modulo ( Fonte):

Client

<html>
<body>
<h1>File Upload with Jersey</h1>

<form action="rest/file/upload" method="post" enctype="multipart/form-data">

   <p>
    Select a file : <input type="file" name="file" size="45" />
   </p>

   <input type="submit" value="Upload It" />
</form>

</body>
</html>

Server

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadTrack(final FormDataMultiPart multiPart) {
    List<FormDataBodyPart> artists = multiPart.getFields("artist");

    StringBuffer output = new StringBuffer();
    for (FormDataBodyPart artist : artists)
        output.append(artist.getValueAs(String.class));

    List<FormDataBodyPart> tracks = multiPart.getFields("track");
    for (FormDataBodyPart track : tracks)
        writeToFile(track.getValueAs(InputStream.class), "Foo");

    return Response.status(200).entity(output.toString()).build();
}

Poi ho anche letto dei caricamenti di file tramite Ajax o Formdata ( Mozilla HttpRequest ) che consente di pubblicare i messaggi nei formati application / x-www-form-urlencoded , multipart / form-data , o text / plain . Non so quale approccio, se esiste, è il migliore.

Una soluzione ideale sarebbe utilizzare Jackson per convertire una stringa json nei miei oggetti dati, ma non ho l'impressione che ciò sia possibile con i dati binari.

    
posta IAE 25.06.2013 - 15:08
fonte

0 risposte

Leggi altre domande sui tag