Jersey Multipart-Client Hochladen
Habe ich konzipiert eine mehrteilige Jersey-REST-Dienst (siehe unten) erhalten Sie einen multipart-request - (Datei-Upload) und speichern die Datei an einem Speicherort:
@POST
@Path("/Upload")
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadFile(@FormDataParam("file") InputStream inputStream,
@FormDataParam("file") FormDataContentDisposition contentDisposition) {
System.out.println("Method Entry");
System.out.println(contentDisposition.getFileName());
String result = "not Success";
File file = null;
if (contentDisposition != null
&& contentDisposition.getFileName() != null
&& contentDisposition.getFileName().trim().length() > 0) {
try {
file = new File("xx"
+ contentDisposition.getFileName());
new File("yy").mkdirs();
file.createNewFile();
OutputStream outputStream = new FileOutputStream(file);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
outputStream.flush();
outputStream.close();
result = "success";
} catch (Exception e) {
System.out.println(e.toString());
}
}
System.out.println("Method Exit");
return result;
}
und mein test-client ist:
Client client = Client.create();
WebResource resource = client
.resource("xyz");
String conString = "This is the content";
FormDataMultiPart formDataMultiPart = new FormDataMultiPart();
formDataMultiPart.field("file", "Testing.txt");
FormDataBodyPart bodyPart = new FormDataBodyPart("file",
new ByteArrayInputStream(conString.getBytes()),
MediaType.APPLICATION_OCTET_STREAM_TYPE);
formDataMultiPart.bodyPart(bodyPart);
String reString = resource.type(MediaType.MULTIPART_FORM_DATA)
.accept(MediaType.TEXT_HTML)
.post(String.class, formDataMultiPart);
System.out.println(reString);
Aber ich bin nicht in der Lage zu erhalten die Antwort.
Ist es perfekt funktioniert, wenn ich die HTML-web-Seite als client zum hochladen der Dateien durch den Aufruf der REST-service, aber vom REST-client es nicht funktioniert.
Gibt es etwas, das muss geändert werden an den client?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung, wenn Sie nicht über eine Datei, aber einige Zeichenfolge oder so, ist etwas wie das hier tun:
Wenn Sie sagen, du bist nicht in der Lage, eine Antwort zu bekommen, was meinst du genau ?
Wenn Sie eine Datei senden, können Sie mit dieser versuchen ?
Auch,
Sollte nicht mit der Bezeichnung "Datei", sondern "Dateiname" zum Beispiel.
Zum Debuggen würde ich dir raten, zu hören auf Ihrem server mit Wireshark.