Sono abbastanza nuovo per i servizi Web, quindi ho iniziato con esempi di base. Questo si riferisce al caricamento di file. Sto usando l'ultima versione (2.17) del pacchetto Jersey per sviluppatori non professionisti. Si precisa che:Impossibile trovare @FormDataParam in Jersey 2.17
pacchetto contiene i JAX-RS 2.0 vaso API, tutti i vasetti modulo Jersey nucleo così come tutte le dipendenze 3a parti necessarie
. Il problema è che non riesco a compilare questa parte:
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();
// save it
writeToFile(uploadedInputStream, uploadedFileLocation);
String output = "File uploaded to : " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
Sembra che @FormDataParam
non esiste in Jersey 2.17 fascio anche documenti dice che fa. Il pacchetto 2.17 è incompleto? Come posso risolvere questo problema?
Sì, che ha risolto il problema. Ma, mi chiedo ancora, perché il bundle per utenti non-maven non è completo o perché non vi sono collegamenti sul sito di Jersey alle librerie mancanti in quanto fanno parte dei documenti API di Jersey? – Rasa
Non lo so, ma immagino perché suggeriscono di usare Maven. Tutte le sezioni nella documentazione hanno dipendenze Maven. Ho semplicemente creato un progetto Maven, e ho appena aggiunto le dipendenze Maven multipart e visto cosa ha tirato dentro. Dipende da un sacco di barattoli già presenti nel pacchetto. Ho appena confrontato ed è così che ho scoperto che il 'mimepull' era l'unico altro necessario. È una seccatura, ma è per questo che usiamo Maven. Per quanto riguarda il motivo per cui non è nel pacchetto, immagino perché ci sono molti altri progetti di estensione. Se incidessero in più parti, avrebbero dovuto includere tutti gli –
di essi. E forse volevano solo includere il nucleo di ciò che è necessario, perché alcune cose come il supporto JSON hanno implementazioni differenti. Potrebbe non avere senso includere tutte quelle dipendenze extra di terze parti, quelle modulo dipendono da –