2016-03-01 91 views
0

我在澤西島有一個功能齊全的網絡服務,它使用像視頻和圖像這樣的多部分表單數據並將它們存儲在一個目錄中。我可以從瀏覽器上傳視頻和圖像。現在我想通過從Gallery Intent或相機中選擇從Android應用程序上傳它們。 我該怎麼做? 任何幫助將不勝感激。這是我的網絡服務代碼。如何讓Android REST客戶端將視頻/圖像發佈到Jersey Web服務?

@Path("/fileupload") 
public class UploadFileService { 

    @POST 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public String uploadFile(
     @FormDataParam("file") InputStream uploadedInputStream, 
     @FormDataParam("file") FormDataContentDisposition fileDetail) { 

     try { 

      String uploadedFileLocation = "/home/aamir/Downloads/" + fileDetail.getFileName(); 

      // save it 
      saveToFile(uploadedInputStream, uploadedFileLocation); 

      String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation; 

      return output; 
     } 

     catch(Exception e) 
     { 
      return "error"; 
     } 

    } 

    // save uploaded file to new location 
    private void saveToFile(InputStream uploadedInputStream, 
     String uploadedFileLocation) { 

     try { 
      OutputStream out = null; 
      int read = 0; 
      byte[] bytes = new byte[1024]; 

      out = new FileOutputStream(new File(uploadedFileLocation)); 
      while ((read = uploadedInputStream.read(bytes)) != -1) { 
       out.write(bytes, 0, read); 
      } 
      out.flush(); 
      out.close(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
    } 
} 

回答

1

我建議你使用Retrofit來下載圖像。這是用於處理RESTful應用一個偉大的圖書館:

Use retrofit to download image file

+0

我沒有興趣在下載圖像,但是從Android應用上傳,即得。 –

0

您可以使用您的Android應用Jersey客戶端API(或與此有關的任何其他客戶端API,Apache的CXF彈簧在腦海...)。它位於一個獨立的jar中,您可以將它作爲依賴項添加到應用程序中,然後在您的應用程序中創建一個用於創建請求的共享客戶端。

從Jersey客戶端文件...

Client client = ClientBuilder.newClient(); 
WebTarget target = client.target("http://localhost:9998").path("resource"); 

Form form = new Form(); 
form.param("x", "foo"); 
form.param("y", "bar"); 

MyJAXBBean bean = 
    target.request(MediaType.APPLICATION_JSON_TYPE) 
      .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE), 
        MyJAXBBean.class); 

https://jersey.java.net/documentation/latest/client.html