众所周知,在我们做程序开发时,文件的上传有多种方式,其中,最常见的的两种方式是将文件直接上传到服务器的硬盘中,然后将文件的路径等相关信息插入数据库中,用户要找文件时直接通过数据库所提供的信息在服务器的硬盘里就可以找到,另外一种则是将文件直接存入数据库中。包括文件大小,文件名,文件类型和文件内容。
图片只是所有文件系统的一个分支,这一次我们就来讨论下图片文件的显示问题,当我们采用第一宗方式将图片文件上传到服务器的硬盘时,我们要调用文件并且显示出来,只需要告诉系统图片文件所在路径就可以了,通过连接服务器的图片所在路径就可以显示图片,在此就不多做介绍,我们来介绍另外一种方式显示图片文件。
首先,我们要知道一个图片文件在数据库中存储的是内容是什么,一般情况下是以字节数组形式存入到数据库中。
假设一个文件对象file,在数据库中有相关属性,其中内容是content,byte[] 类型
action中的代码如下
public String viewImages() {
HttpServletResponse response = null;
ServletOutputStream out = null;
try {
response = ServletActionContext.getResponse();
response.setContentType("multipart/form-data");
out = response.getOutputStream();
out.write(file.getContent());
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (response != null) {
try {
response.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return
null; }
注意,此方法必须放回null,
struts.xml的配置如下
method="viewImages">
jsp页面的调用代码如下
至此,通过struts2将图片流显示在jsp页面中,同时如果直接访问这个action可以将这个文件下载到本地磁盘中。