Der Verzehr eines multipart/form-Daten via RESTful-CXF
Arbeite ich schon in einem webservice konsumiert und produziert von JSON-Dateien mit Hilfe von Apache CXF in Verbindung mit Jackson.
Jedoch eine der service-Methoden sollten in der Lage sein, zu sparen Sie ein bereits hochgeladenes Bild aus einer mobilen Anwendung, die einen multipart/form-data-POST-request an meinen webservice, und ich weiß nicht, wie Sie zu behandeln diese Art von content-type-in meinem Kontext. Wir in der Regel erstellen "Request" und "Response" - Objekte zu produzieren und konsumieren von JSON, aber ich befürchte, das würde nicht funktionieren, für diesen Fall.
Dies ist die Anfrage format:
Content-type: multipart/form-data
"Description": text/plain
"Path": text/plain
"Image": image/jpeg
Wie man richtig konsumieren, diese Art von Anfrage und speichern Sie die image-server-Seite?
[BEARBEITEN]
Habe ich es geschafft, Sie zu konsumieren multipart/form-Daten, die durch die Nutzung dieser:
public returnType savePicture(
@Multipart(value = "mode", type = "text/plain") String mode,
@Multipart(value = "type", type = "text/plain") String type,
@Multipart(value = "path", type = "text/plain") String path
@Multipart(value = "image", type = "image/jpeg") Attachment image
)
{
Jedoch, wenn Sie versuchen, zu konsumieren, die folgende POST-Anfrage:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="mode"
T
--AaB03x
content-disposition: form-data; name="type"
M
--AaB03x
content-disposition: form-data; name="path"
c:/img/
--AaB03x
content-disposition: form-data; name="image"; filename="image.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
imgdata
--AaB03x--
Bin ich immer die folgende Fehlermeldung:
javax.ws.rs.BadRequestException: org.apache.cxf.jaxrs.utils.multipart.MultipartReadException: Kein multipart mit content-id Typ gefunden, Anfrage content-type : multipart/form-data;boundary=AaB03x
Als ich verbrauchen nur Modus, zum Beispiel, funktioniert es einwandfrei. Es bricht nur für 2 oder mehr Parameter. Jede Idee, warum ist das falsch?
- 1. stackoverflow.com/questions/10246579/... 2. stackoverflow.com/questions/8913382/... Konsultieren diese
- 3. cxf.apache.org/docs/jax-rs-multiparts.html
- Danke für die links, ich werde versuchen, etwas nützliches aus Ihnen. Ich schaffte es zu konsumieren, text/plain, bin ich nur Probleme mit dem Bild jetzt, aber ich habe nicht versucht, mit inputStream wie link 1 vorgeschlagen.
- Jedes Glück auf dieser ?
- Noch nicht, um ehrlich zu sein. Ich habe editierte das original post mit meinem Fortschritt, aber bisher kein Glück verbrauchen mehrere Teile.
- ich habe noch nie verwendet multipart in meinem rest-services... ich ll geben diesem einen Versuch und lassen Sie Sie wissen, in wenigen Tagen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Stand vor ähnlichen Problem irgendwann wieder.
Den folgenden code hat den trick für mich
Kurz gesagt, es ist glaube ich die
@Consumes
Anmerkung aus, die Sie fehlen.Es scheint, als ob wir das problem gefunden, und es war in Bezug auf das format der Anfrage. Das korrekte format sollte sein:
Ändern, um dieses format erlaubt mir, Sie zu konsumieren, die anderen Parameter.
Für das konsumieren von multipart form data. die Verwendung von @verbraucht-tag & bereitstellen "multipart/form-data" zusammen mit dem value-parameter wie
@Verbraucht(Wert = "multipart/form-data")
finden
https://jnorthr.wordpress.com/2012/07/10/http-header-content-type-and-encodings/