使用JSP将图像文件的内容转储到浏览器

时间:2011-05-19 11:26:53

标签: jsp

如何将磁盘上图像文件的内容转储到浏览器?

我尝试了这个,但图像被破坏了(浏览器中的图像符号已损坏)。

<%@ include file="config.jsp" %>
<%@ page import="java.io.*" %> 
<%@ page contentType="image/png" %> 

<%
String fn = request.getParameter("f");

String filename = uploads_folder + fn;

File file = new File(filename);
FileInputStream in = new FileInputStream(filename);
int c;
while ((c = in.read()) != -1) {
    out.write(c);
}

%>

3 个答案:

答案 0 :(得分:3)

JSP是HTML / CSS / JS和其他基于 text 的内容的模板。它不是像图像那样的二进制数据的模板。从本质上讲,JSP是错误的工具。您应该使用servlet类。创建一个extends HttpServlet的类,并完成与doGet()方法中的JSP完全相同的工作(虽然它可以更加健壮和高效),最后将图像URL更改为servlet一个而不是JSP一个。

另见:

答案 1 :(得分:0)

有必要删除JSP标记之外的换行符,以免破坏图像。

<%@ include file="config.jsp" %><%@ page import="java.io.*" %><%@ page contentType="image/png" %><%

String fn = request.getParameter("f");

String filename = uploads_folder + fn;

File file = new File(filename);
FileInputStream in = new FileInputStream(filename);
int c;
while ((c = in.read()) != -1) {
    out.write(c);
}

%>

答案 2 :(得分:0)

要考虑两件事, 1)数据没有用空格破坏,使用'trimDirectiveWhitespaces'这个页面指令属性来修剪空格。 2)设置图像内容类型标题

谢谢, 拉梅什