2013-09-10 2 views
0

У меня есть API REST API. Я хочу, чтобы иметь возможность отправить запрос JSON сообщению на сервер с параметрамиREST API, связанный с загрузкой файлов в java

{ name:"abc", description:"test"} . 

Наряду с этими параметрами, я также хочу, чтобы отправить файл через мой пост запрос. Я не уверен, как достичь следующих целей:

  1. Чтобы отправить файл и другие параметры в одном объекте JSON на стороне клиента.
  2. Получить их на стороне сервера.

Я читал, что MULTIPART_FORM_DATA может быть использован для этого. Нужна помощь, чтобы определить, как ее использовать.

Мой код сервера

@POST 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public Response create(JSONObject input) { 
    ObjectMapper mapper = new ObjectMapper(); 
    Simulation config = mapper 
    .readValue(input.toString(), Simulation.class); 
    if (!CreateSimulation.isVaild(config)) 
    { 
    ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST); 
    builder.entity("Bad Request: Wrong Parameters"); 
    Response response = builder.build(); 
    throw new WebApplicationException(response); 
    } 
    int id = CreateSimulation.create(config); 
    JSONObject output = new JSONObject(); 
    output.put("simulation-id", id + ""); 
    return Response.ok(output.toString(), MediaType.APPLICATION_JSON).build(); 
} 

ответ

0

Encode файл в base64 и отправить его в виде текста.

+0

Стоит отметить, что этот подход увеличивает размер файла на 30% – xwhyz

0

Другой способ - прочитать файл в байтах на клиенте. Затем отправьте байты в службу REST как приложение/октет-поток

Образец кода здесь из моего сообщения в другой теме. Служба получает байты из файла, зашифровывает файл и возвращает заархивированные байты. https://stackoverflow.com/a/32253028/15789

Надеюсь, это вам поможет.

Смежные вопросы