Używam wiosny 4 i hibernacji 4 do przesyłania i pobierania obrazu do iz bazy danych. Przekonwertowałem obraz wieloczęściowy na tablicę bajtów i zapisałem w bazie danych. Moje zapytanie dotyczy sposobu pobrania tego obrazu z bazy danych i wyświetlenia tablicy bajtów w jsp bez zapisywania jej w systemie lokalnym.Załaduj obraz wiosną mvc
Odpowiedz
Ponieważ nie wspomniano o strukturze db do przechowywania obrazu, uważam, że przechowujesz go w typie danych blob
.
Część 1: ControllerClass
Po pobraniu obrazu z db, a następnie zakodować ten obraz za pomocą Base64.encode
i map, że obraz do JSP (używając java.util.map
).
Map<String, Object> model = new HashMap<String, Object>();
model.put("myImage", Base64.encode(MyImage)); //MyImage (datatype 'byte[]') is the image retrieved from DB
return new ModelAndView("display", model); //display is the name of jsp on which you want to display image
Część 2: JSP
następnie wyświetlać je na JSP
poprzez dekodowanie tablicę bajtów,
<img id="myImg" name="myImg" src="data:image/jpg;base64,<c:out value='${myImage}'/>" >
Dosłownie co robimy jest
w dao metoda
public InputStream get_user_photo_by_id(int id_user) throws Exception {
Blob blob_photo;
String sql = "Select b_photo_file from user_master where id_user = ?";
blob_photo = getJdbcTemplate().queryForObject(sql, new Object[] {id_user}, Blob.class);
if(blob_photo!=null)
return blob_photo.getBinaryStream();
else
return null;
}
W metodzie usług właśnie powrocie InputStream do kontrolera
W kontrolerze
@ResponseBody
@RequestMapping(value = "admin/user/{id}/photo", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
public byte[] testphoto(@PathVariable("id") int id_sys_user, HttpSession ses) throws Exception {
byte[] thumb = null;
InputStream in = UserOps.getUserPhotobyId(id_sys_user);
if(in!=null){
thumb = IOUtils.toByteArray(in);
}
return thumb;
}
teraz wystarczy podłączyć admin/user/{id}/zdjęć lub dowolny ciąg chcesz korzystać w < img src = ""> tak długo, jak pasują i masz swoje zdjęcie
Możesz zrobić to bez problemu. Musisz skonfigurować kontroler, który wyśle obraz, gdy zażąda go przeglądarka. Ale tutaj kontroler nie umieszcza go w Modelu, aby dać mu widok, ale bezpośrednio generuje odpowiedź HTTP. Następnie na stronie JSP wystarczy wskazać odpowiedni adres URL.
Oto (częściowe) przykładem tego, co mogłoby być:
@RequestMapping(value = "/img/{imgid}")
public void getFile(HttpServletRequest request, @PathVariable(value = "imgid") long imgid, HttpServletResponse response) throws IOException {
contentType = "img/png"; //or what you need
response.setContentType(contentType);
// find the image bytes into into byte[] imgBytes
response.setContentLength((int) imgBytes.length);
response.setStatus(HttpServletResponse.SC_OK);
OutputStream os = response.getOutputStream();
os.write(imgBytes);
}
- 1. Oprawa opadająca wiosną MVC
- 2. przekierować wiosną MVC
- 3. Wstępnie załaduj obraz tła
- 4. Wiele Zobacz przeliczniki wiosną MVC
- 5. Załaduj obraz Picturebox z pamięci?
- 6. Załaduj obraz w tagu img
- 7. Picasso Załaduj obraz do celu
- 8. Jak wysłać obraz z serwisu WWW wiosną
- 9. obraz nie jest wyświetlany w jsp z wiosną
- 10. JPA Hibernate luzem/partii aktualizacji wiosną MVC
- 11. Jak przekierować do POST wiosną MVC
- 12. Załaduj obraz do UICollectionView w sposób asynchroniczny?
- 13. Załaduj obraz za pomocą Phonegap: InvalidCastException
- 14. Android: Universal Image Loader Załaduj duży obraz
- 15. Załaduj obraz za pomocą Google Volley
- 16. Opencv java - Załaduj obraz do GUI
- 17. Załaduj kodowany obraz base64 za pomocą FormData?
- 18. Multipart Form Image Załaduj obraz i Json
- 19. iOS: załaduj obraz z adresu URL
- 20. Wiosną mvc jak uzyskać ścieżkę kontekstu w kontrolerze
- 21. Jak potwierdzać emaile z dodatkami wiosną Aplikacja internetowa MVC
- 22. Jak renderować widok przy użyciu AJAX wiosną MVC
- 23. AspectJ wiosną
- 24. ExceptionHandler wiosną
- 25. Przeciągnij i upuść obraz i załaduj wtyczkę do tinymce
- 26. Załaduj obraz przy użyciu danych formularza POST w Pythonie wniosków
- 27. Javascript: Załaduj obraz z adresu URL i wyświetl
- 28. Załaduj obraz Dicom i wyświetl go - przy użyciu biblioteki ClearCanvas.
- 29. Załaduj lokalny obraz do przeglądarki przy użyciu JavaScript?
- 30. Załaduj obraz z obszaru zasobów projektu w języku C#
z kontekstu Lepiej jest przesyłanie obrazu w 'path' dysku, a przy użyciu bazy danych –
Przeszedłem przez to, ale w moim przypadku muszę przechowywać go w db, jakiekolwiek rozwiązanie? –
Przepraszam, nie znam się na hibernacji. po prostu spróbuj tego http://stackoverflow.com/questions/24567553/save-and-retrieve-image-from-database-using-spring-mvc-and-hibernate-rest-servic i http://stackoverflow.com/questions/17384928/hibernacja-how-to-retrieve-an-image-from-the-database –