2016-07-28 5 views

答えて

0

JAX-RS Webサービスでは、base64文字列を使用することもできますが、ファイルを送信する方がはるかに優れています。個人的には、HTTPフォームをPOSTするためのユーザーの応答を取得するメソッドを作成することをお勧めします。このフォームには、識別子だけでなく、送信する必要があるすべての情報が含まれています。

これは、このタイプのWebサービスで使用するメソッド定義に似ています。これはJerseyと互換性があり、ユーザーは基本HTMLフォームまたはPOSTリクエストを介してファイルを送信できます。 Java Webサービスの構築については、this articleをご覧ください。 「ファイルのアップロード」という側面はカバーしていませんが、非常に便利で、Java Webサービスの機能に関する一般的な情報をもっと学ぶのに役立ちました。

@POST 
    @Path("/upload") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    @Produces("text/html") 
    public Response uploadFile(
     @FormDataParam("username") String username, 
     @FormDataParam("password") String password, 
     @FormDataParam("title") String title, 
     @FormDataParam("file") InputStream fileInputString, 
     @FormDataParam("file") FormDataContentDisposition fileInputDetails) { 
    String status = null; 

    String fileLocation = "/home/user/uploadtest/test.png; 
    NumberFormat myFormat = NumberFormat.getInstance(); 
    myFormat.setGroupingUsed(true); 
    // Save the file 
    try { 
    OutputStream out = new FileOutputStream(new File(fileLocation)); 
    byte[] buffer = new byte[1024]; 
    int bytes = 0; 
    long file_size = 0; 
    while ((bytes = fileInputString.read(buffer)) != -1) { 
     out.write(buffer, 0, bytes); 
     file_size += bytes; 
    } 
    out.flush(); 
    out.close(); 


    status = "File has been uploaded to:" + fileLocation; 
    } catch (IOException ex) { 
     System.err.println("Unable to save file: " + fileLocation); 
     ex.printStackTrace(); 
    } 


    return Response.status(200).entity(status).build(); 
} 
関連する問題