2012-02-09 1 views
1

У меня есть следующий код для отправки изображений клиента:JAX-RS: Когда мы отправляем обратно изображение, в каком формате оно получено клиентом?

@GET 
@Path("/images/{image}") @Produces("image/*") 
public Response getImage(@PathParam("image") String image) { 
File f = new File(image); 

    if (!f.exists()) { 
     throw new WebApplicationException(404); 
    } 

    String mt = new MimetypesFileTypeMap().getContentType(f); 
    return Response.ok(f, mt).build(); 
} 

Теперь клиент будет получать изображение в каком формате? Будет ли оно обернуто в XML или в виде исходного двоичного кода? Если я просто поставлю ответ в src тега изображения, будет ли изображение отображаться?

Если нет, то как я могу сделать сырой двоичный поток, который возвращается, в образ, который может быть помещен в IMG тег

ответ

2

объявления 1) Файл будет сериализовать в качестве исходного двоичного файла (открыт поток будет возвращено непосредственно)

ad 2) вы имеете в виду местоположение ресурса, возвращающего изображение в файл, не так ли? если да, то ответ да (вы не можете просто положить необработанные двоичные данные в HTML-страницу, как «< IMG SRC =» <binary_data> "/ >)

+0

Спасибо. Но если я делаю запрос Ajax для ресурса, и я возвращаюсь сырой поток, как я могу сделать отображение тега изображения, что воображение e? – Daud

+2

@Daud: Это звучит как отдельный вопрос. (Это проблема на стороне клиента, а не проблема на стороне сервера). –

0

Вы также можете добавить тип содержимого вашего ответа заголовка, например, image/jpeg, image/png или image/gif, чтобы клиент мог сам решить, каков тип изображения, прочитав заголовок ответа. Еще одна вещь, если URL-адрес, на который вы отправляете сообщение, возвращает поток изображений. нет необходимости в запросе ajax. Если это сервлет, вы можете добавить URL сервлета в изображение src, и он будет работать.