2015-09-12 3 views
3

Я работаю над приложением java spring mvc. У меня есть метод в моем контроллере, ответственный за создание изображения:java - spring mvc @RequestMapping создает несколько форматов

@RequestMapping(value = "/view", method = RequestMethod.GET, produces = "image/jpg") 
public void viewImage(HttpServletResponse response, HttpServletRequest request) throws Exception 

Это прекрасно работает. Но сейчас у меня проблема. Полученные изображения могут иметь 3 формата jpg, jpeg и png. Поэтому мне нужно несколько атрибутов produces в @RequestMapping. Есть какой-либо способ сделать это? Например, примерно следующее: produces = "image/jpg, image/jpeg, image/png"

ответ

2

В вашем случае поле produces не имеет значения, так как метод возвращает void. Кажется, нужно записывать изображение в выходной поток. Вы можете установить заголовок ответа с требуемым форматом изображения. Например:

response.setContentType("image/jpeg"); 
1

Вы можете иметь несколько типов пантомимы в производит, что-то вроде

produces={"image/jpg, image/jpeg, image/png"}

Теперь для того, чтобы рамки, чтобы знать, к которым MIMETYPE, чтобы решить, что вам нужно либо добавьте путь или параметр или заголовок Accept к запросу (так называемая стратегия PPA). Подробнее на content negotiation

0

Я нашел его. Из атрибута this link, produces атрибут может иметь строковый массив. Так что я могу иметь это:

producess = {"image/jpg", "image/jpeg", "image/png"} 
0

в более новых версиях Spring, это лучше осуществить так:

produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE, MediaType.IMAGE_GIF_VALUE} 
Смежные вопросы