1、base64编码显示;但是尽量避免使用该方式,因为可能存在丢失内容情况;
2、使用servlet获取图片,以流的形式显示。serlvet路径最好带个随机数,防止页面缓存问题。
方法1:
byte[] data = getImageStr(bean.getImgPath());
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
String imgStr = "";
if(data!=null){
try {
imgStr ="data:image/jpg;base64," + encoder.encode(data) + "";
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 图片转化成base64字符串
* 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
* @param path
* @return
*/
public static byte[] getImageStr(String path) {
if (!new File(path).exists()) {
return null;
}
InputStream in = null;
byte[] data = null;
// 读取图片字节数组
try {
in = new FileInputStream(path);
data = new byte[in.available()];
in.read(data);
in.close();
// 对字节数组Base64编码
// BASE64Encoder encoder = new BASE64Encoder();
// return encoder.encode(data); // 返回Base64编码过的字节数组字符串
return data; // 返回Base64编码过的字节数组字符串
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
<img src='"+imgStr+"' style='width:112px;height:125px;'/>
方法2:
java.util.Random random=new java.util.Random();// 定义随机类
int ran = random.nextInt(10);// 返回[0,10)集合中的整数,注意不包括10
"<img src='/XX(项目名)/zpservlet?n="+ran+"&path="+bean.getImgPath()+"' style='width:112px;height:125px;'/>"
/**
* 文件路径
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
response.setContentType(CONTENT_TYPE);
request.setCharacterEncoding("UTF-8");
String path = request.getParameter("path");
System.out.println("path:"+path);
InputStream in = null;
OutputStream out = null;
if(path != null && !"".equals(path)){
File outputFile = new File(path);
if (outputFile.exists() && outputFile.length() > 0) {
in = new FileInputStream(outputFile);
out = response.getOutputStream();
IOUtils.copy(in, out);
// byte[] buffer = new byte[1024];
// int read = -1;
// while ((read = in.read(buffer)) != -1) {
// out.write(buffer, 0, read);
// }
out.close();
// if(in!=null)in.close();
} else {
System.out.println("找不到文件:" + outputFile.getName());
}
}
}