业务需求:
上传图片 - > 数据表中存储了真实的图片所在盘地址(并没有存在tomcat路径下)
问题描述:
页面要展示上传的图片 <img src=""/> 直接写磁盘地址是读取不到的
解决方案:
通过后台在response中读到二进制流的方式来在前台显示图片;
@RequestMapping("/readImg")
public void readImg(String filePath, HttpServletRequest request, HttpServletResponse response){
FileInputStream in;
try {
request.setCharacterEncoding("utf-8");
//页面img标签中src中传入的真是图片地址路径
String path = request.getParameter("filePath");
String filePathEcode=new String(path.trim().getBytes(), "UTF-8");
response.setContentType("application/octet-stream;charset=UTF-8");
//图片读取路径
in=new FileInputStream(filePathEcode);
// 得到文件大小
int i=in.available();
//创建存放文件内容的数组
byte[]data=new byte[i];
in.read(data);
in.close();
//把图片写出去
OutputStream outputStream=new BufferedOutputStream(response.getOutputStream());
outputStream.write(data);
//将缓存区的数据进行输出
outputStream.flush();
outputStream.close();
} catch (Exception e) {
logger.error(e.getMessage());
}
}