我設計瞭如下一個多州的REST服務接收多請求(上傳文件),並保存在磁盤位置中的文件:澤西多部分客戶端上傳
@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;
}
和我的測試客戶端是:
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);
但我無法得到迴應。
當我使用HTML網頁作爲客戶端通過調用REST服務上傳文件,但是來自REST客戶端的文件不工作時,它完美地工作。
客戶端有什麼需要改變的嗎?
誰能幫助我在添加新的頭上面的測試客戶端碼? – cxyz