2014-03-31 51 views
0

以下是我寫入的將PUT圖像添加到球衣服務器的代碼。PUT方法:無法發送「文件名」表單數據使用Java API的Jersey API?

 byte[] img = image(file);// coverts file into byte strea 


    FormDataMultiPart form = new FormDataMultiPart(); 
    form.field("fileName", file); 
    FormDataBodyPart fdp = new FormDataBodyPart("fileUpload", 
      new ByteArrayInputStream(img), 
      MediaType.APPLICATION_OCTET_STREAM_TYPE); 
    form.bodyPart(fdp); 


    ClientResponse rs = wr.type(MediaType.APPLICATION_FORM_URLENCODED).put(
      ClientResponse.class, form); 

當我運行的代碼,我能夠在字節流發送到服務器,但其返回的錯誤,這是無法找到我在form.field提供的文件名,所以返回400錯誤的請求錯誤?

我無法理解我在這裏錯過了什麼?

+0

我覺得莫名其妙,我在一個錯誤的方式將表單數據。 – user3481386

+0

我正在做一些更多的調試,發現表單字段將按照以下形式進行:form = {fileUpload = [[email protected]],fileName = [[email protected]] } – user3481386

回答

2

我能解決我的問題。我沒有添加多部分。這link幫我

以下是我做過什麼來代替身體部分定義

FormDataBodyPart f = new FormDataBodyPart(FormDataContentDisposition 
      .name("fileUpload").fileName(file).build(), 
      new ByteArrayInputStream(img), 
      MediaType.APPLICATION_OCTET_STREAM_TYPE); 

    MultiPart multiPart = new FormDataMultiPart().bodyPart(f); 

    ClientResponse rs = wr.type(MediaType.MULTIPART_FORM_DATA).put(
      ClientResponse.class, multiPart); 
相關問題