Làm cách nào để phục vụ một hình ảnh, được lưu trữ trên ổ cứng của tôi, trong một servlet?
Ví dụ:
Tôi có hình ảnh được lưu trữ trong đường dẫn 'Images/button.png'
và tôi muốn phục vụ điều này trong một servlet có URL file/button.png
.Xuất tệp hình ảnh từ một servlet
26
A
Trả lời
19
- ánh xạ một servlet để url-pattern
/file
- đọc các tập tin từ đĩa
- ghi nó vào
response.getOutputStream()
- thiết lập
Content-Type
tiêu đề đểimage/png
(nếu nó chỉ là pngs)
45
Đây là mã hoạt động:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
ServletContext cntx= req.getServletContext();
// Get the absolute path of the image
String filename = cntx.getRealPath("Images/button.png");
// retrieve mimeType dynamically
String mime = cntx.getMimeType(filename);
if (mime == null) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
resp.setContentType(mime);
File file = new File(filename);
resp.setContentLength((int)file.length());
FileInputStream in = new FileInputStream(file);
OutputStream out = resp.getOutputStream();
// Copy the contents of the file to the output stream
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) >= 0) {
out.write(buf, 0, count);
}
out.close();
in.close();
}
0
Đây là một cách rất đơn giản khác.
File file = new File("imageman.png");
BufferedImage image = ImageIO.read(file);
ImageIO.write(image, "PNG", resp.getOutputStream());
+1
Điều này rất không hiệu quả vì nó phân tích cú pháp hình ảnh thành một đối tượng 'BufferedImage' một cách không cần thiết. Bước này không cần thiết nếu bạn không muốn thao tác hình ảnh (thay đổi kích cỡ, cắt, biến đổi, v.v.). Cách nhanh nhất là chỉ truyền các byte chưa sửa đổi từ đầu vào hình ảnh đến đầu ra phản hồi. – BalusC
Các vấn đề liên quan
- 1. Xuất hình ảnh thô từ hình ảnh Imagick trong PHP
- 2. lưu/xuất tệp hình ảnh từ nội dung html?
- 3. Trích xuất hình ảnh phụ từ một hình ảnh bằng cách sử dụng C#
- 4. trích xuất một hình ảnh kênh từ hình ảnh RGB với opencV
- 5. Gọi Servlet Post từ một Servlet khác
- 6. Tải một tệp jsp từ một servlet (Máy ứng dụng)
- 7. Xác minh một hình ảnh từ xa thực sự là một tệp hình ảnh trong ruby?
- 8. Hình ảnh xuất hàng loạt từ Thư viện?
- 9. Xóa tệp hình ảnh từ máy chủ
- 10. Cắt một hình elip từ một hình ảnh
- 11. trích xuất các từ từ một tệp
- 12. Trích xuất xương tay từ hình ảnh X quang
- 13. Hiển thị hình ảnh từ một loạt hình ảnh - Javascript
- 14. OpenCV tiểu hình ảnh từ một hình ảnh Mat
- 15. Trích xuất kích thước hình ảnh từ chuỗi Base64
- 16. Làm cách nào để bạn trích xuất hình ảnh từ tệp pdf bằng C#
- 17. trích xuất hình ảnh ký tự phông chữ từ tệp ttf
- 18. ipad - trích xuất hình ảnh từ ứng dụng?
- 19. Làm cách nào để trích xuất hình ảnh từ video?
- 20. LibTIFF: Trích xuất tất cả các thẻ từ một hình ảnh TIFF
- 21. Đọc văn bản từ một hình ảnh
- 22. Tạo một PDF từ nhiều hình ảnh
- 23. Truyền các tệp lớn trong một servlet java
- 24. Cách gửi tham số từ một servlet
- 25. Trích xuất ảnh tài nguyên cục bộ từ Winforms Biểu mẫu/Nút/Thuộc tính hình ảnh
- 26. Tạo video từ hình ảnh
- 27. Trích xuất hình ảnh bằng iTextSharp
- 28. Cho một tệp PDF, cách trích xuất hình ảnh * và vị trí của chúng trên trang * từ dòng lệnh?
- 29. Tạo hình ảnh dạng sóng từ tệp âm thanh
- 30. Cố gắng trích xuất các giá trị pixel từ một hình ảnh PNG cụ thể
Bạn có biết tầm quan trọng của 'Content-Type' được đặt thành' image/png' hoặc bất cứ điều gì bạn cần như được đề cập trong câu trả lời sau không? – Lion