В моем контроллере весны я добавляю эти два метода, чтобы загрузить и загрузить изображение из моих представлений:
@RequestMapping(value="picture/{theString}", method=RequestMethod.GET)
public byte[] getPicture(@PathVariable("theString") String theString) {
return serv.download_picture(theString);
}
@RequestMapping(value="upload", method=RequestMethod.POST)
public boolean setPicture(@ModelAttribute("object") E object, BindingResult result, @RequestParam("file") MultipartFile file) {
return serv.upload_picture(object, file);
}
setPicture (с эквивалентным upload_picture в классе службы) уже реализованы, но мне нужны некоторые идеи о том, как реализовать download_picture, так как я могу сделать что-то вроде этого:
<img src="<c:url value="<<Entity>>/picture/<<id>>"/>">
любой может указать направление для этого?
PS: Если возможно, я хочу использовать это объявление для моего метода download_picture в моем классе обслуживания:
public byte[] download_picture(String path) {
return null;
}
где путь - это идентификатор от объекта, который я хочу загрузить.
PS.: Изображения хранятся в папке /src/main/resources
в приложении spring/maven. полный URL-адрес внутри этого пути - это что-то вроде <<entity>>/<<id>>/foto.jpeg
Весной имеющий версии 3.1 или более поздней версии вы можете указать, produces
в @RequestMapping
аннотацию.
Ниже приведен пример.
@ResponseBody
@RequestMapping("picture/{theString}", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
public byte[] testphoto(@PathVariable("theString") String theString) throws IOException
{
InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg"); //
//Here you may write above code in service class to read file from path "/src/main/resources" as stream and return it to controller class.
return IOUtils.toByteArray(in);
}
Пусть это поможет вам.