Tôi đang sử dụng spring 4 và hibernate 4 để tải lên và truy xuất hình ảnh đến và từ cơ sở dữ liệu. Tôi đã chuyển đổi hình ảnh nhiều thành mảng byte và được lưu trữ trong cơ sở dữ liệu. Truy vấn của tôi là cách truy xuất hình ảnh đó từ cơ sở dữ liệu và hiển thị mảng byte trong jsp mà không lưu trữ nó trong hệ thống cục bộ.Tải lên hình ảnh vào mùa xuân mvc
Trả lời
Vì bạn chưa đề cập đến cấu trúc db của mình để lưu trữ hình ảnh, tôi sẽ xem xét rằng bạn đang lưu trữ nó trong blob
kiểu dữ liệu.
Phần 1: ControllerClass
Sau khi lấy hình ảnh từ db, sau đó mã hóa hình ảnh rằng việc sử dụng Base64.encode
và bản đồ hình ảnh đó để jsp của bạn (sử dụng 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
Phần 2: JSP
Sau đó hiển thị nó trên JSP
bằng cách giải mã các mảng byte,
<img id="myImg" name="myImg" src="data:image/jpg;base64,<c:out value='${myImage}'/>" >
Theo nghĩa đen những gì chúng ta đang làm là
trong dao phương pháp
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;
}
Trong phương pháp dịch vụ chỉ trở inputstream để điều khiển
Trong điều khiển
@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;
}
bây giờ chỉ cần cắm vào admin/user/{id}/ảnh hoặc bất kỳ chuỗi bạn muốn sử dụng trong < img src = ""> miễn là chúng phù hợp và bạn có ảnh của mình
Bạn có thể làm điều đó mà không gặp vấn đề gì. Bạn phải thiết lập bộ điều khiển sẽ gửi hình ảnh khi trình duyệt yêu cầu. Nhưng ở đây, bộ điều khiển không đặt nó vào một Mô hình để đưa nó vào một khung nhìn, nhưng trực tiếp tạo ra phản hồi HTTP. Sau đó, trong JSP của bạn, bạn chỉ cần chỉ ra URL có liên quan.
Đây là một (một phần) ví dụ về những gì nó có thể là:
@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. Tải hình ảnh lên trong ASP.NET MVC
- 2. Sự cố tải lên tệp mùa xuân
- 3. Nơi lưu trữ video tải lên của người dùng trong ứng dụng mvc mùa xuân?
- 4. Tải lên hình ảnh có trong mô hình MVC
- 5. tải đậu mùa xuân vào một servlet
- 6. Tải lên hình ảnh Summernote từ URL
- 7. ASP.NET MVC - Tải hình ảnh lên Amazon S3
- 8. Mùa xuân MVC: Sự khác biệt giữa mùa xuân: ràng buộc và hình thức: mẫu
- 9. Làm thế nào để cấu hình mùa xuân RestTemplate với SSL (trong mùa xuân @MVC)
- 10. Mùa xuân: Tải lên tệp Dịch vụ Web RESTFUL
- 11. tham chiếu tệp .css với thymeleaf vào mùa xuân mvc
- 12. chế độ dev trong mùa xuân MVC
- 13. Tải ảnh lên ứng dụng MVC 4
- 14. mẫu mvc mùa xuân: chọn thẻ
- 15. Mẫu Bản đồ và Mô hình trong Mùa xuân MVC
- 16. Nhiều chế độ xem giải quyết vào mùa xuân mvc
- 17. Ràng buộc dữ liệu JSON vào mùa xuân mvc
- 18. interceptor mùa xuân mvc: truy cập vào ResponseEntity trong postHandle
- 19. html5 Tải lên hình ảnh
- 20. hình ảnh tải lên không hiển thị cho đến khi tôi làm mới trang Spring Mvc
- 21. ghi đè cấu hình bean vào mùa xuân
- 22. cấu hình đậu mùa xuân
- 23. AspectJ vào mùa xuân
- 24. cách lấy getServletContext() trong bộ điều khiển mvc mùa xuân
- 25. Freemarker + Hướng dẫn mùa xuân MVC
- 26. Kiểm tra MVC mùa xuân với MockMvc
- 27. Mùa xuân - hình ảnh hiển thị trên tệp jsp
- 28. Trường ẩn trong mùa xuân MVC
- 29. Bộ điều khiển MVC mùa xuân versioning
- 30. tải hình ảnh từ android lên webservice
Out of bối cảnh Tốt hơn là tải lên các hình ảnh trong 'path' đĩa, thay vì sử dụng cơ sở dữ liệu –
tôi đã đi qua nó, nhưng trong trường hợp của tôi tôi cần phải lưu trữ nó trong db, bất kỳ giải pháp? –
xin lỗi tôi không quen với hibernate. chỉ cần thử http://stackoverflow.com/questions/24567553/save-and-retrieve-image-from-database-using-spring-mvc-and-hibernate-rest-servic và http://stackoverflow.com/questions này/17384928/hibernate-how-to-retrieve-an-image-từ-the-cơ sở dữ liệu –