Stworzyłem jersey spokojny usługę internetową, gdzie zarządzanego przesłać wielokrotnością plików korzystających @Context HttpServletRequest request
jako metoda podpisu, który pracuje ładnie.
Chodzi o to, aby sprowadzić innych pól formularza muszę powtarzalnie sprawdzić z .isFormField();
metody z względnym .getName();
dla pliku lub .getFieldName();
i .getString();
metody, aby sprawdzić, czy wymagane pola są obecne lub nie każdym razem, gdy serwis internetowy nazywa co moim zdaniem trochę długi i kosztowny proces, jeśli istnieje kilka innych dziedzin.Multiple File Upload przy użyciu @Context HttpServletRequest z @FormDataParam w koszulce
prostsze podejście było użyć @FormDataParam
gdzie usługa używana do odsłoniętej z parametrem, który klient musiał przejść jednak problemu to nie jestem w stanie przekazać więcej niż jeden plik za jednym zamachem.
Ponieważ nie można również użyć request.getParameter("field1");
, aby uzyskać inne pola formularza, jeśli typ nośnika lub encja to multipart/form-data
.
Ilekroć próbował połączyć oba @FormDataParam
i @Context HttpServletRequest request
razem, to rzuca wyjątek:
org.apache.tomcat.util.http.fileupload.FileUploadException: Stream closed
podczas parsowania wniosek z .parseRequest(request);
metody ServletFileUpload
klasie.
Uprzejmie sugerujemy dobre podejście Jak mogę uzyskać wiele plików przesyłanych z wymaganymi polami formularza tak łatwo, jak @FormDataParam
w jersey.
podejście do wielokrotnego przesłanie pliku:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/multipleFiles")
public String restDemo(@Context HttpServletRequest request)
{
//...code goes here
}
Moja forma:
wyjściowy: (po parsowania życzenie)
pole1> abc
pole2> xyz
Chrysanthemum.jpg Rozmiar: 879.394
Desert.jpg Rozmiar: 845.941
Hydrangeas.jpg Rozmiar: 595.284
Jellyfish.jpg Rozmiar: 775702
Nie do końca rozumiem, dlaczego nie można przesłać więcej niż jednego pliku podczas korzystania z @FormDataParam? Czy "wiele plików" oznacza, że potrzebujesz zmiennej liczby plików do przesłania (użytkownik może kliknąć "dodaj więcej plików" w formularzu i uzyskać dodatkowe pola przesyłania)? – Jonas
@Jas to prawda, że użytkownik może dodać więcej plików z interfejsu użytkownika, ale jakie podejście należy zastosować, aby nadrobić zaległości ze wszystkimi plikami za pomocą '@ FormDataParam'? Zgodnie z moją wiedzą mapowanie wielu plików w jednym '@ FormDataParam' nie jest możliwe. – agpt