2016-01-08 2 views
0

Я отправляю файлы (изображения, pdf, ...) с телефона android на сервер, который является сервлетом. Я использую HttpClient и HttpPost. (Многочастная данные)Как файлы ответов с сервера

Вот мой код для отправки запроса на пост

String postURL = //server url; 

HttpClient httpClient = new DefaultHttpClient(); 
HttpPost postRequest = new HttpPost(postURL); 

ByteArrayBody bab = new ByteArrayBody(imageBytes,"file_name_ignored"); 
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
reqEntity.addPart("source", bab); 
postRequest.setEntity(reqEntity); 

HttpResponse response = httpClient.execute(postRequest); 

Я хочу получать и отправлять файлы (много файлов) в качестве многоголосного. Я могу отправить от клиента клиентскую отправку с сервера на клиент в сервлет. (В ответе).

Как я могу это сделать? (клиентские запросы получают файлы и как серверный список ответов на файлы, как все в одной капсуле).

+0

Сделать zip-файл из них? –

+0

@Wim Deblauwe как? –

+0

Правильно ли я предполагаю, что вы хотите, чтобы клиент загружал сразу несколько файлов? Если это так, вы можете отправить только один файл за каждый запрос. Поэтому, если вы хотите отправить все в 1 запрос, вам нужно создать zip-файл всех ваших файлов и вернуть сервлет этому zip-файлу. Есть много примеров того, что доступно. –

ответ

0

Если вы, например. используя Джерси на сервере, вы можете использовать: org.glassfish.jersey.media.multipart.MultiPart как ответ тело.

@Produces("multipart/mixed") 
public Response multiPartResponder(){ 
    MultiPart multiPart = new MultiPart(); 
    BodyPart bodyPart = new BodyPart(myFileInputStream, MediaType.APPLICATION_OCTET_STREAM_TYPE); 
    multiPart.bodyPart(bodyPart); 
    return Response.status(OK).entity(multiPart); 
} 

Затем можно использовать либо одна часть тела в вашей полезной нагрузки JSON и один для содержимого файла, или аннотировать тело файла часть с настраиваемым заголовком, который содержит мета-данные.

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