2014-09-13 1 views
2

Я написал простое приложение SpringMVC и хост на Paas. Я создал таблицу в Mysql, а столбец - Blob. Я могу загружать файлы через администратор Mysql. Прямо сейчас, мой сервер может корректно обслуживать файлы html или javascript в браузере. Однако, когда я обслуживаю файл jpg в http://myserver.com/File/ad.jpg, мой браузер показал небольшой значок, и если я его сохраню, программное обеспечение Windows Image покажет, что изображение повреждено.Каков правильный способ работы с файлом изображения из Blob в Spring MVC-контроллере?

Вот некоторые из кода:

@RequestMapping(value="/File/**", //{name:.+}", 
    method = RequestMethod.GET) 
public @ResponseBody void getContent(
// @PathVariable("name") String name, 
    HttpServletRequest request, 
    HttpServletResponse response) throws IOException { 
    String name = request.getPathInfo(); 
    .... 
    IOUtils.copy(blob.getBinaryStream(), out); 

Я обнаружил, что getServletContext() возвращает нуль, так что я не смог CONTENTTYPE, так что я спас CONTENTTYPE в Mysql как изображение/JPEG для объявления .jpg. Я установил, что расположение было встроенным. Что еще я должен сделать, чтобы служить jpg?

+0

Попробуйте вернуть 'byte []'. Никогда не записывайте непосредственно в выходные потоки с контроллера Spring MVC. – chrylis

+0

И не забудьте установить правильный тип контента. – Bart

+0

@chrylis Я установил contentType как image/jpeg и использовал write (blob.getBytes (0, length)), но теперь я получил пустую страницу для ad.jpg – Splash

ответ

1

Наконец-то я обнаружил, что исходный код не имеет ничего плохого. Исходная веб-страница администратора Mysql загрузила blob неправильно. После того, как я обнаружил, что у Пааса есть секретная новая страница администрирования, и вы можете загрузить правильный blob с двоичной опцией. Я по-прежнему ценю все ответы в комментариях.

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